黑马程序员技术交流社区
标题: 前几期版块提到排序的问题:解决你们关于排序的问题四 [打印本页]
作者: 张周飞 时间: 2014-7-10 11:34
标题: 前几期版块提到排序的问题:解决你们关于排序的问题四
本帖最后由 张周飞 于 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排序知识和技巧....
------------------------------------------------------------------------------------------
-
图片1.png
(122.83 KB, 下载次数: 1)
-
图片6.png
(54.81 KB, 下载次数: 1)
-
图片7.png
(74.96 KB, 下载次数: 1)
-
图片8.png
(91.22 KB, 下载次数: 2)
-
图片9.png
(26.32 KB, 下载次数: 1)
-
图片10.png
(42.36 KB, 下载次数: 1)
-
图片11.png
(35.3 KB, 下载次数: 1)
-
图片12.png
(46.73 KB, 下载次数: 3)
-
图片13.png
(86.73 KB, 下载次数: 1)
-
图片14.png
(44.81 KB, 下载次数: 1)
-
图片15.png
(133.62 KB, 下载次数: 1)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |