A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张周飞 于 2014-7-13 10:02 编辑

8、基数排序
(1)基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
(2)实例:

(3)用java实现
1 import java.util.ArrayList;  
2 import java.util.List;  
3  
4 public class radixSort {  
5     int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51};  
6 public radixSort(){  
7     sort(a);  
8     for(int i=0;i<a.length;i++)  
9         System.out.println(a);  
10 }  
11 public  void sort(int[] array){     
12                  
13             //首先确定排序的趟数;   
14         int max=array[0];     
15         for(int i=1;i<array.length;i++){     
16                if(array>max){     
17                max=array;     
18                }     
19             }     
20  
21     int time=0;     
22            //判断位数;   
23             while(max>0){     
24                max/=10;     
25                 time++;     
26             }     
27                  
28         //建立10个队列;   
29             List<ArrayList> queue=new ArrayList<ArrayList>();     
30             for(int i=0;i<10;i++){     
31                 ArrayList<Integer> queue1=new ArrayList<Integer>();   
32                 queue.add(queue1);     
33         }     
34                 
35             //进行time次分配和收集;   
36             for(int i=0;i<time;i++){     
37                     
38                 //分配数组元素;   
39                for(int j=0;j<array.length;j++){     
40                     //得到数字的第time+1位数;  
41                    int x=array[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i);  
42                    ArrayList<Integer> queue2=queue.get(x);  
43                    queue2.add(array[j]);  
44                    queue.set(x, queue2);  
45             }     
46                 int count=0;//元素计数器;  
47             //收集队列元素;   
48                 for(int k=0;k<10;k++){   
49                 while(queue.get(k).size()>0){  
50                     ArrayList<Integer> queue3=queue.get(k);  
51                         array[count]=queue3.get(0);     
52                         queue3.remove(0);  
53                     count++;  
54               }     
55             }     
56           }     
57                  
58    }   
59  
60 }  


------------------------------------------------------------------------------------------

{:3_60:}就写到这里:愿能帮助大家解决和理解java排序知识和技巧....
---------------------:分了四版块来写:---------------------------------------
前几期版块很多人提到排序的问题:解决你们关于排序的问题 一:
http://bbs.itheima.com/thread-128457-1-1.html

前几期版块很多人提到排序的问题:解决你们关于排序的问题二 :
http://bbs.itheima.com/thread-128458-1-1.html

前几期版块很多人提到排序的问题:解决你们关于排序的问题 三:
http://bbs.itheima.com/thread-128460-1-1.html

前几期版块很多人提到排序的问题:解决你们关于排序的问题 四 :
http://bbs.itheima.com/thread-128466-1-1.html
------------------------------------------------------------------------------------------

更多图片 小图 大图
组图打开中,请稍候......

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马