桶排序 (Bucket sort)或所谓的箱排序
是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。
定义
假定:输入是由一个随机过程产生的[0, 1)区间上均匀分布的实数。将区间[0, 1)划分为n个大小相等的子区间(桶),每桶大小1/n:[0, 1/n), [1/n, 2/n), [2/n, 3/n),…,[k/n, (k+1)/n ),…将n个输入元素分配到这些桶中,对桶中元素进行排序,然后依次连接桶输入0 ≤A[1..n] <1辅助数组B[0..n-1]是一指针数组,指向桶(链表)。
小程序:快速排序算法
Console.Write("您打算输入多少组数字?");
string arrary;
arrary = Console.ReadLine(); // get a char
Console.Write("此次排序的范围在0-??");
string range;
range = Console.ReadLine(); // get a char
//为每一组赋值
string inputStr;
int[] a = new int[Convert.ToInt32(range)];
int i, j;
for (int q = 0; q < Convert.ToInt32(range); q++)
a[q] = 0;
for (int i1 = 0; i1 < Convert.ToInt32(arrary); i1++)
{
Console.Write("请输入第" + (Convert.ToInt32(i1) + 1) + "数字: ");
inputStr = Console.ReadLine(); // get a char
a[Convert.ToInt32(inputStr)]++;
Console.WriteLine("你输入的第" + (Convert.ToInt32(i1) + 1) + "数字: " + inputStr);
}
for (i = 0; i < Convert.ToInt32(range); i++)
{
for (j = 1; j <= a[i]; j++)
{
Console.WriteLine(i);
}
}
Console.ReadKey();