算法描述:
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。
桶排序 (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; } } }