一组有序桶,每个桶中表示一个数值范围(或一个数),将在该范围内的数放入该桶中,在该桶中继续进行排序
利用映射关系(数放入对应桶中),尽可能甚至完全不比较(不在各待排序数之间做比较)
用空间换时间:桶数量越多,排序越快
using System;
class Test
{
static void Main()
{
int[] array = new int[] { 3, 5, 88, 7, 2, 7 };
ShowArray(BucketSort(array));
Console.ReadKey();
}
// 桶排序,假设对数据范围在0~1000的整数进行排序
private static int[] BucketSort(int[] array, int maxValue = 1000)
{
int[] bucketArray = new int[maxValue + 1];
foreach (var v in array)
{
bucketArray[v]++;
}
return bucketArray;
}
// 显示排好序的数组
private static void ShowArray(int[] array)
{
for (int i = 0; i < array.Length; i++)
{
for (int j = 0; j < array[i]; j++)
{
Console.WriteLine(i);
}
}
}
}