08_程序员必须掌握的8大排序算法_基数排序
来源:互联网 发布:阿里巴巴排名软件 编辑:程序博客网 时间:2024/05/21 04:20
基数排序
基本思想
将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
实例
用Java实现
import java.util.ArrayList; import java.util.List; public class radixSort { 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}; public radixSort(){ sort(a); for(int i=0;i<a.length;i++){ System.out.println(a[i]); } } public void sort(int[] array){ //首先确定排序的趟数; int max=array[0]; for(int i=1;i<array.length;i++){ if(array[i]>max){ max=array[i]; } } int time=0; //判断位数; while(max>0){ max/=10; time++; } //建立10个队列; List<ArrayList> queue=new ArrayList<ArrayList>(); for(int i=0;i<10;i++){ ArrayList<Integer> queue1=new ArrayList<Integer>(); queue.add(queue1); } //进行time次分配和收集; for(int i=0;i<time;i++){ //分配数组元素; for(int j=0;j<array.length;j++){ //得到数字的第time+1位数; int x=array[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i); ArrayList<Integer> queue2=queue.get(x); queue2.add(array[j]); queue.set(x, queue2); } int count=0;//元素计数器; //收集队列元素; for(int k=0;k<10;k++){ while(queue.get(k).size()>0){ ArrayList<Integer> queue3=queue.get(k); array[count]=queue3.get(0); queue3.remove(0); count++; } } } } }
阅读全文
0 0
- 08_程序员必须掌握的8大排序算法_基数排序
- 01_程序员必须掌握的8大排序算法_直接插入排序
- 02_程序员必须掌握的8大排序算法_希尔排序
- 03_程序员必须掌握的8大排序算法_简单选择排序
- 04_程序员必须掌握的8大排序算法_堆排序
- 05_程序员必须掌握的8大排序算法_冒泡排序
- 06_程序员必须掌握的8大排序算法_快速排序
- 07_程序员必须掌握的8大排序算法_并归排序
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Java程序员必须掌握的8大排序算法
- Oracle表与索引的分析及索引重建
- 【计算机视觉学习笔记--双目视觉几何框架系列】
- 运行jar应用程序引用其他jar包的四种方法
- Java 子类继承父类方法的重写(或者覆盖,override)
- H5写的时钟
- 08_程序员必须掌握的8大排序算法_基数排序
- 产品经理如何绕开API的坑?
- inDensity,inTargetDensity,inScreenDensity关系详解
- JAVA数据结构:希尔排序
- 图像浮雕效果的实现
- unity 1.4 Snap 与场景布置
- 将文件复制到临时文件夹
- 随笔Android IPC进程通信之——Messenger
- C# NOPI读取Excel