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),...