简单的桶排序:
有限个数字m,每个数字的大小都在1与n之间,则我们可以假设有n个桶,遍历m个数字,将其存入对应的桶中(如数字的值为3,就存入3号桶,桶的值对应存入数字的个数
桶号 1 2 3 4 5
计数 1 1 2 0 1
按照桶的序号将数字倒出来:
桶的倒出顺序 数字队列
5号桶倒出1个5 5
4号桶倒出0个4 5
3号桶倒出2个3 5,3,3
2号桶倒出1个2 5,3,3,2
1号桶倒出1个1 5,3,3,2,1
java代码:
import java.util.*;
public class BucketSortDemo{
public static void main(String[]args){
int []a={5,3,3,2,1};
System.out.println(Arrays.toString(a));
bucketSort(a,5);
}
public static void bucketSort(int[]a,int max){
int []count=new int[max+1]; //创建一个长度为max的数组
// 遍历数组a
for(int i=0;i<a.length;i++){
// 如果数组a的值 作为的count的 下标,每次出现一次 count数组的值+1
count[a[i]]++;
}
// 将桶的中数字倒出
System.out.print("排序号的数组:");
for(int i=0;i<count.length;i++){
while(count[i]>0){
System.out.print(i+"");
count[i]--;
}
}
}
}