import java.util.ArrayList;
//author:lilywangcn
public class RadixSort {
//private static int[] array={36,5,16,98,95,47,32,36,48};
private static int[] array={614,738,921,485,637,101,215,530,790,306};
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList[] arrayradix=new ArrayList[10];
for(int k=0;k<10;k++){
arrayradix[k]=new ArrayList();
}
int key=0;
for(int i=0;i<3;i++){
for(int j=0; j<array.length; j++){
int numkey=getKey(array[j],10,i);
switch(numkey){
case 0:arrayradix[0].add(array[j]);break;
case 1:arrayradix[1].add(array[j]); break;
case 2:arrayradix[2].add(array[j]);break;
case 3:arrayradix[3].add(array[j]); break;
case 4:arrayradix[4].add(array[j]); break;
case 5:arrayradix[5].add(array[j]); break;
case 6:arrayradix[6].add(array[j]); break;
case 7:arrayradix[7].add(array[j]); break;
case 8:arrayradix[8].add(array[j]); break;
case 9:arrayradix[9].add(array[j]); break;
}
}
int m=0;
for(int k=0;k<10;k++){
for(int j=0;j<arrayradix[k].size();j++){
array[m++]=(Integer)arrayradix[k].get(j);
}
arrayradix[k].clear();
}
print();
}
}
private static int getKey(int num, int radix, int position){
if (position ==0) return num%radix;
else return (num/getnum(position,radix))%radix;
}
private static int getnum(int position, int radix){
int result=radix;
for(int i=1;i<position;i++)
result*=radix;
return result;
}
private static void print(){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println("");
}
}
算法的时间复杂度:O(d*n),d为数字的最大位数。算法稳定
运行结果:
530 790 921 101 614 485 215 306 637 738
101 306 614 215 921 530 637 738 485 790
101 215 306 485 530 614 637 738 790 921
分享到:
相关推荐
算法是解决特定问题或执行特定任务的一系列步骤或规则的有序集合。在计算机科学中,算法通常用来指导计算机执行特定的任务或解决问题。良好设计的算法能够有效地解决问题,并且在给定的输入下能够产生正确的输出。 ...
包括: 堆排序.swf 规并排序.swf 基数排序.swf 快速排序.swf 冒泡排序.swf 桶式排序法.swf 希尔排序.swf 直接插入排序.swf 直接选择排序.swf
第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,...
*5.4.7 外部基数排序. . . . 269 *5.4.8 双磁带排序. . . . 273 *5.4.9 磁盘与磁鼓. . . . 279 5.5 小结、历史与文献. . . 297 第6 章查找. . . . . . . . 306 6.1 顺序查找. ...
基数排序 代码演示视频 完整代码和注释如下 # -*- coding: UTF-8 -*- #Space: https://github.com/Tri-x/exercise #Space: https://space.bilibili.com/187492698 #Author: Trix #Description: 十大经典排序算法 #...
包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...
包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...
第三部分“排序” (第6~11章) 按章节顺序分别讨论基本排序方法 (如选择排序、插入排序、冒泡排序、希尔排序等) 、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊目的排序方法,并...
数据结构课程是计算机类专业的专业基础课程,在IT人才培养中,起着重要...系列课程包含11个部分,本课为第9部分排序,介绍插入排序、交换排序、选择排序、归并排序、基数排序等各种排序算法,以及各种算法的性能分析。
* 数据结构中的所有排序算法(冒泡排序,堆排序,直接插入排序,二路归并排序,快速排序,基数排序,直接选择排序,希尔排序)的例子; * 丰富的数组,位,指针,枚举,结构体,联合体等操作的例子; * 一个...
* 数据结构中的所有排序算法(冒泡排序,堆排序,直接插入排序,二路归并排序,快速排序,基数排序,直接选择排序,希尔排序)的例子; * 丰富的数组,位,指针,枚举,结构体,联合体等操作的例子; * 一个...
31 习题9 排序------------------------------------------------------------------------------------34 第1部分 C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学...
作 者:严蔚敏 李冬梅 吴伟民 出版时间:2011-2-1 0:00:00 [1] 字 数:398千字 责任编辑:蒋亮 页 数:236页 开 本:16 ISBN书号:978-7-115-23490-2 ...8.6.2 链式基数排序 228 8.7 小结 232 习题 233
编程思路:首先在程序开始处,开通语句#include引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列...3.用起泡排序、汉诺塔、双链表、起泡排序、基数排序、二分查找、二叉树遍历等设置雪花颜色。
一大堆模版 自己可以下来参考 应该有200个以上吧 自己下来看看 其中一个目录 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 ... 基数排序 拓扑排序 排序网络
他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七种计算机语言,观众超过300万人。 在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明复杂的概念...
他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七种计算机语言,观众超过300万人。 在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明复杂的概念...
基数排序 13.不可能生成右图所示二叉排序树的关键字序列是( ) A.4 5 3 1 2 B.4 2 5 3 1 C.4 5 2 1 3 D.4 2 3 1 5 14.平衡二叉树中任一结点的( ) A.左、右子树的高度均相同 B.左、右子树高度差的绝对值不超过1...
更多内容请关注http://blog.csdn.net/PowerRock/