`

排序系列(七)--基数排序

J# 
阅读更多

 

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 
分享到:
评论

相关推荐

    基数排序算法.zip

    算法是解决特定问题或执行特定任务的一系列步骤或规则的有序集合。在计算机科学中,算法通常用来指导计算机执行特定的任务或解决问题。良好设计的算法能够有效地解决问题,并且在给定的输入下能够产生正确的输出。 ...

    数据结构模拟演示过程swf——排序系列(整理出来的,很直观,非常不错!)

    包括: 堆排序.swf 规并排序.swf 基数排序.swf 快速排序.swf 冒泡排序.swf 桶式排序法.swf 希尔排序.swf 直接插入排序.swf 直接选择排序.swf

    算法:算法C语言实现 第1-4部分 基础知识、数据结构、排序及搜索

    第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,...

    计算机程序设计艺术(第3卷 第二版)排序与查找(中文版+带书签目录)pdf格式

    *5.4.7 外部基数排序. . . . 269 *5.4.8 双磁带排序. . . . 273 *5.4.9 磁盘与磁鼓. . . . 279 5.5 小结、历史与文献. . . 297 第6 章查找. . . . . . . . 306 6.1 顺序查找. ...

    十个必知的排序算法|Python实例系列[1]

    基数排序 代码演示视频 完整代码和注释如下 # -*- coding: UTF-8 -*- #Space: https://github.com/Tri-x/exercise #Space: https://space.bilibili.com/187492698 #Author: Trix #Description: 十大经典排序算法 #...

    算法:C语言实现(第1-4部分) Robert.Sedgewick.part1

    包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...

    算法:C语言实现(第1-4部分) Robert.Sedgewick.part2

    包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...

    算法c语言实现(前两册)

    第三部分“排序” (第6~11章) 按章节顺序分别讨论基本排序方法 (如选择排序、插入排序、冒泡排序、希尔排序等) 、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊目的排序方法,并...

    数据结构基础系列(9):排序

    数据结构课程是计算机类专业的专业基础课程,在IT人才培养中,起着重要...系列课程包含11个部分,本课为第9部分排序,介绍插入排序、交换排序、选择排序、归并排序、基数排序等各种排序算法,以及各种算法的性能分析。

    c语言例程大全,帮你学习c编程

    * 数据结构中的所有排序算法(冒泡排序,堆排序,直接插入排序,二路归并排序,快速排序,基数排序,直接选择排序,希尔排序)的例子; * 丰富的数组,位,指针,枚举,结构体,联合体等操作的例子; * 一个...

    C语言例程库(CLEL_v2.2)

    * 数据结构中的所有排序算法(冒泡排序,堆排序,直接插入排序,二路归并排序,快速排序,基数排序,直接选择排序,希尔排序)的例子; * 丰富的数组,位,指针,枚举,结构体,联合体等操作的例子; * 一个...

    数据结构(C++)有关练习题

    31 习题9 排序------------------------------------------------------------------------------------34 第1部分 C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学...

    严蔚敏 数据结构(C语言版) 代码 23490 书中算法

    作 者:严蔚敏 李冬梅 吴伟民 出版时间:2011-2-1 0:00:00 [1] 字 数:398千字 责任编辑:蒋亮 页 数:236页 开 本:16 ISBN书号:978-7-115-23490-2 ...8.6.2 链式基数排序 228 8.7 小结 232 习题 233

    C语言程序设计实现 雪花飘落

    编程思路:首先在程序开始处,开通语句#include引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列...3.用起泡排序、汉诺塔、双链表、起泡排序、基数排序、二分查找、二叉树遍历等设置雪花颜色。

    ACM算法模版大集合

    一大堆模版 自己可以下来参考 应该有200个以上吧 自己下来看看 其中一个目录 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 ... 基数排序 拓扑排序 排序网络

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七种计算机语言,观众超过300万人。 在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明复杂的概念...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    他曾在中央电视台主讲了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/

Global site tag (gtag.js) - Google Analytics