【编程题】桶排序(java实现)
思路
针对于固定范围的值建桶,将数组中的值依次装入桶,再依桶的范围倒出;
代码
import java.util.Arrays;
public class BucketSort {
//给定范围排序,例如,只有0到9
public static void main(String[] args){
int[] arr={4,5,1,3,5,5,6,4,2,8,1,3,5,6,2,0,5,6,2,3,5,9,4,2,3,0,2,3};
bucketSort(arr);
System.out.println(Arrays.toString(arr));
}
static void bucketSort(int[] arr){
int[] nums=new int[10];//分配范围个桶
for(int i=0,len=arr.length;i<len;i++){
nums[arr[i]]++;//入桶
}
for(int i=0,j=0,len=arr.length;i<10&&j<len;i++){
while (j<len&&nums[i]>0){//出桶
arr[j++]=i;
nums[i]--;
}
}
}
}