排序篇--桶排序
算法描述:
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。
桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到一定数量的桶里。
实现逻辑:
1.设置一个定量的数组当作空桶;
2.遍历输入数据,并且把数据一个一个放到对应的桶里去,记录对应数据出现的频率;
3.读取桶数据出现的频率来恢复数据。
public static void bucketSort(int[] arr)
{
if (arr == null || arr.length < 2)
{
return;
}
int max = Integer.MIN_VALUE;
for (int i = 0; i < arr.length;i++)
{
max = Math.max(max,arr[i]);
}
//桶比max data多一个 记录对应 data 出现的频率
int[] bucket = new int[max + 1];
for(int i = 0;i < arr.length;i++)
{
bucket[arr[i]]++;
}
// 使用对应 data 出现的频率恢复数据
int i = 0;
for(int j = 0;j < bucket.length;j++)
{
while (bucket[j]-- > 0)
{
arr[i++] = j;
}
}
}
浙公网安备 33010602011771号