基数排序是根据个位、十位......排序的方式,最好可达O(n)。
本例通过余数获得位上数字的方法效率太低。
public static int[] data = {3,7,8,0,9,5,4,1,6,2}; public static void sort(int[] number, int d) { int k=0; int n=1; int m=1;//控制键值排序依据在哪一位 int[][] temp = new int[number.length][number.length]; int[] order = new int[number.length]; while(m <= d) { for(int i = 0; i < number.length; i++) { int lsd = ((number[i] / n) % 10); temp[lsd][order[lsd]] = number[i]; order[lsd]++; } for(int i = 0; i < d; i++) { if(order[i] != 0) for(int j = 0; j < order[i]; j++) { number[k] = temp[i][j]; k++; } order[i] = 0; } n *= 10; k = 0; m++; } } public static void main(String[] args) { sort(data, 10); System.out.println(Arrays.toString(data)); }
未完,待春季后再研究通过位运算获得位上数的方法吧。
相关推荐
基数排序基数排序基数排序基数排序基数排序
插入排序 冒泡排序 堆排序 基数排序 选择排序 快速排序的源码 java实现
作业24-归并排序与基数排序.docx 作业24-归并排序与基数排序.docx ...作业24-归并排序与基数排序.docx作业24-归并排序与基数排序.docx作业24-归并排序与基数排序.docx作业24-归并排序与基数排序.docx
算法导论之基数排序,桶排序。基数排序是利用在各个位上进行计数排序,是一种线性排序
数据结构基数排序数据结构基数排序数据结构基数排序数据结构基数排序数据结构基数排序数据结构基数排序
插入排序,选择排序,基数排序,冒泡排序的C++实现
排序算法很多,下面有基数排序,堆排序,希尔排序,直接插入排序的代码和思路
数据结构之基数排序数据结构之基数排序数据结构之基数排序数据结构之基数排序数据结构之基数排序
"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式基数排序。 基本要求: 待排序表的表长不...
C_算法源码(冒泡排序+基数排序+插入排序+快速排序+归并排序 C_算法源码(冒泡排序+基数排序+插入排序+快速排序+归并排序 C_算法源码(冒泡排序+基数排序+插入排序+快速排序+归并排序 C_算法源码(冒泡排序+基数排序+...
包括了基数排序的实现代码和流程图。 先对个位数字进行统计,然后根据个位进行排序,然后对十位进行统计,然后根据十位进行排序,即可获得最终结果。 时间效率:待排序列为n个记录,10个关键码,关键码的取值范围为0...
试通过随机数据比较归并排序、基数排序各算法的关键字比较次数和关键字移动次数。 (1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有。关键字...
基数排序C语言实现
这样会不会太邪恶了 基数排序根本没有关键字比较 题目有错滴
基数排序法用链表完成使用C语言适用于刚入门的学者
简单的十大排序,c++代码实现,堆,冒泡,快速,计数,基数,归并,简单排序等
基数排序过程及程序基数排序过程及程序基数排序过程及程序基数排序过程及程序
常用排序效率PK 冒泡 快排 选择排序 基数排序 希尔排序 折半插入排序 等
C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字拆分成数字位。并且按照数字位的值对数据项进行排序,这种方法不需要进行比较操作。 为了尽可能少的...