public class SortTest {
/**
* 桶排序,此处从小到大排序。
* 如果需要从到到小,只需逆向遍历桶索引
* @param data
* @param max
*/
public static void buktSort(int[] data,int max){
//创建并初始化桶的值
int[] buket = new int[max];
for(int i=0; i<max;i++){
buket=0;
}
//将要排序的元素当做桶的索引,找到对应的桶位置,进行计数,
//即桶的索引为要排序的值,索引对应的位置的值为出现 的次数
for(int i =0; i<data.length; i++){
buket[ data ]++;
}
//因为桶索引即为要排序的元素,而且索引本身就是从小到大排序的,
//所以从小到大输出桶索引,为0的不输出,大于1的按出现的次数依次输出,即能完成排序
for(int i=0; i<buket.length; i++){
for(int j=0; j<buket; j++){
System.out.print(i + ",");
}
}
}
//桶排序测试
public static void main(String[] args) {
int[] data = {1,0,10,3,5,6,6,8};
SortTest.buktSort(data, 11);
}
}7.png (10.83 KB, 下载次数: 3)
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |