package sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
/**
* 桶排序
*
*/
public class Bucket8 {
public static void main(String[] args) {
int[] arr1 = {44,38,5,47,15,31,32,88,2,23,43,54,1,7,56,100,101,102};
int[] sortedArr=bucketSort(arr1);
System.out.println(Arrays.toString(sortedArr));
}
private static int[] bucketSort(int[] arr) {
int min=arr[0];
int max=arr[0];
for(int i=0;i<arr.length;i++) {
if(arr[i]>max) {
max=arr[i];
}
if(arr[i]<min) {
min=arr[i];
}
}
int bucketNum=(max-min)/arr.length+1;
ArrayList<ArrayList<Integer>> bucketList=new ArrayList<>();
for(int i=0;i<bucketNum;i++) {
bucketList.add(new ArrayList<Integer>());
}
for(int i=0;i<arr.length;i++) {
int bucketIndex=(arr[i]-min)/arr.length;
bucketList.get(bucketIndex).add(arr[i]);
}
for(ArrayList<Integer> bucket:bucketList) {
Collections.<Integer>sort(bucket);
}
int[] sortedArr=new int[arr.length];
int index=0;
for(ArrayList<Integer> bucket:bucketList) {
for(Integer num:bucket) {
sortedArr[index]=num;
index++;
}
}
return sortedArr;
}
}
桶排序算法
最新推荐文章于 2024-07-25 18:22:10 发布