桶排序时间复杂度为O(n+N),空间复杂度也是O(n+N),适合小整数,n是线性表的大小,N为键值范围。
public static <E> void bucketSort(E[] list){
E[] buckets=(E[])new java.util.ArrayList[N];
for(int i=0;i<list.length;i++){
int key=list[i].getKey();
if(buckets[key]==null)
buckets[key]=new java.util.ArrayList();
buckets[key].add(list[i]);
}
int k=0;
for(int i=0;i<buckets.length;i++){
if(buckets[i]!=null){
for(int j=0;j<buckets[i].size();j++)
list[k++]=buckets[i].get(j);
}
}
}