using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace QueueTest
{
class QueueSort
{
enum DigitType { ones=1,tems=10}
static void DisplayArray(int[] n) {
for (int i = 0; i < n.GetUpperBound(0); i++)
{
Console.Write(n[i]+" ");
}
}
static void RSort(Queue[] que,int[] n, DigitType digit )
{
int sNum;
for (int i = 0; i <= n.GetUpperBound(0); i++)
{
if (digit==DigitType.ones)
{
sNum = n[i] % 10;
}
else
{
sNum = n[i] /10;
}
que[sNum].Enqueue(n[i]);
}
}
static void BuildArray(Queue[] que, int[] n) {
int y = 0;
for (int i = 0; i <=9; i++)
{
while (que[i].Count>0)
{
n[y] =Convert.ToInt32( que[i].Dequeue().ToString());
y++;
}
}
}
static void Main()
{
Queue[] numQueue = new Queue[10];
int[] nums = new int[] { 91,46,85,15,92,35,31,22 };
Console.WriteLine("初始排序:");
DisplayArray(nums);
for (int i = 0; i < 10; i++)
{
numQueue[i] = new Queue();
}
RSort(numQueue, nums,DigitType.ones);
BuildArray(numQueue, nums);
Console.WriteLine();
Console.WriteLine("第一遍按個位排序:");
DisplayArray(nums);
RSort(numQueue, nums, DigitType.tems);
BuildArray(numQueue, nums);
Console.WriteLine();
Console.WriteLine("第2遍按十位排序:");
DisplayArray(nums);
Console.Read();
}
}
}
005_基數排序
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 桶排序和基數排序均屬于分配排序。分配排序的基本思想:排序過程無須比較關鍵字,而是通過用額外的空間來"分配"和"收集...
- 數據結構與算法——計數排序、桶排序、基數排序 計數排序 計數排序有如下四個步驟。 首先會對每個輸入進行頻率統計,得...
- 選擇排序 對于任何輸入,時間為O(n*n); 冒泡排序 最優(對于升序的數組,因為加入了一個跳出判斷):O(n),...