基数排序(java实现)

基数排序  就是先比较数组中元素的个位数,排序得到新的数组,然后比较新的数组中的十位数,排序得到新数组,然后再对最新得到的数组比较百位数.......依次循环

比如{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++;
        }

 

posted @ 2014-03-13 23:36  huliangbin  阅读(417)  评论(0编辑  收藏  举报