算法思想
桶排序是基于非比较的排序, 性能与待排序列的状况有关.
桶排序假定待排序列均匀的分布在一个范围中,并将这一范围划分为几个子范围, 该子范围即为桶. 然后将待排序列依次按照某种规定插入桶内, 再通过桶合并方式组合有有序序列.
Code
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]);
}
int[] bucket = new int[max + 1];
for (int i = 0; i < arr.length; i++) {
bucket[arr[i]]++; // 存放元素的个数
}
int i = 0;
for (int j = 0; j < bucket.length; j++) {
while (bucket[j]-- > 0){ // 元素个数
arr[i++] = j; // 重排arr
}
}
}