基数排序 就是先比较数组中元素的个位数,排序得到新的数组,然后比较新的数组中的十位数,排序得到新数组,然后再对最新得到的数组比较百位数.......依次循环
比如{82 ,31 ,29 ,71, 72, 42, 64, 5,110} 比较个位数 排序 得到新数列{110,31,71,82,72,42,64,5,29} 然后对新数列比较十位数{110,29,31,42,64,71,72,82} 然后比较百位数,没有百位数的算作0,所以得到{29,31,42,64,71,72,82,110}
代码如下:
//基数排序 arrays是需要排序的数组 List<Integer> list = new ArrayList<>();//辅助存储 int sortTimes = 0; boolean flag = true; while(flag){ flag = false; for(int i = 0;i<=9;i++){ for(int index = 0; index<arrays.length; index++){ if(getNumber(arrays[index],sortTimes) == i){ list.add(arrays[index]); } if(arrays[index]/(int) Math.pow(10,index+1)!=0){ flag = true; } } } for(int i = 0; i<list.size();i++){ arrays[i] = list.get(i); } list.clear(); sortTimes++; }