`
leichenlei
  • 浏览: 128178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

排序(5)基数排序

 
阅读更多

基数排序是根据个位、十位......排序的方式,最好可达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));
	}

未完,待春季后再研究通过位运算获得位上数的方法吧。  

 

分享到:
评论

相关推荐

    归并排序,基数排序算法比较

    归并排序和基数排序是两种不同的排序算法,它们在实现方式和效率特点上存在显著差异。 **归并排序**是一种基于分治策略的排序算法。它的基本思想是将待排序的序列分成两个长度相等(或近似相等)的部分,分别对这两...

    桶排序,基数排序

    算法导论之基数排序,桶排序。基数排序是利用在各个位上进行计数排序,是一种线性排序

    基数排序、堆排序、希尔排序、直接插入排序

    这里我们将深入探讨四种常见的排序算法:基数排序、堆排序、希尔排序和直接插入排序。 首先,基数排序是一种非比较型整数排序算法,它的基本思想是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序...

    插入排序冒泡排序堆排序基数排序选择排序快速排序源码

    例如,插入排序和选择排序适合小规模数据,冒泡排序虽然效率较低但实现简单,堆排序和快速排序在处理大规模数据时有较好性能,而基数排序则能处理非负整数排序。在实际开发中,根据具体需求选择合适的排序算法是非常...

    数据结构学习笔记排序算法:基数排序

    数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...

    排序:插入排序,选择排序,基数排序,冒泡排序

    在本文中,我们将深入探讨四种经典的排序算法:插入排序、选择排序、基数排序和冒泡排序,以及它们在C++语言中的实现。 **插入排序(Insertion Sort)** 插入排序是一种简单直观的排序算法,它的工作原理类似于我们...

    数据结构排序算法汇总包-直接插入排序 折半插入排序 2—路插入排序 表插入排序 希尔排序 起泡排序 快速排序 简单选择排序 树形选择排序 堆排序 归并排序链式基数排序

    "直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式基数排序。 基本要求: 待排序表的表长不...

    常用排序PK 冒泡 快排 选择排序 基数排序 等

    本文将详细解析几种常见的排序算法:冒泡排序、快速排序、选择排序以及基数排序,并探讨它们的工作原理、效率和适用场景。 **冒泡排序**: 冒泡排序是一种简单直观的排序算法,通过比较相邻元素并交换位置来实现...

    基数排序及流程图

    包括了基数排序的实现代码和流程图。 先对个位数字进行统计,然后根据个位进行排序,然后对十位进行统计,然后根据十位进行排序,即可获得最终结果。 时间效率:待排序列为n个记录,10个关键码,关键码的取值范围为0...

    归并排序、基数排序算法比较

    试通过随机数据比较归并排序、基数排序各算法的关键字比较次数和关键字移动次数。 (1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有。关键字...

    插入排序、选择排序、希尔排序、堆排序、冒泡、双向冒泡、快速排序、归并排序、递归的归并排序、基数排序

    以下是关于"插入排序、选择排序、希尔排序、堆排序、冒泡、双向冒泡、快速排序、归并排序、递归的归并排序、基数排序"这十大经典排序算法的详细解释: 1. 插入排序:插入排序是一种简单的排序算法,它通过构建有序...

    基数排序链表法

    基数排序法用链表完成使用C语言适用于刚入门的学者

    基数排序C语言实现

    基数排序是一种非比较型整数排序算法,它的原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。这种排序方法非常适合处理大量整数的排序,尤其在数字位数相同或者相差不大的情况下,效率较高。本文将深入...

    数据结构基数排序数据结构基数排序

    数据结构中的基数排序是一种非比较型整数排序算法,它基于数字的位宽进行排序,尤其适用于处理大量相同数字的情况。基数排序的核心思想是将数字按照位数从低位到高位分别进行桶排序,最终得到完全有序的序列。下面将...

    基数排序_基数排序算法_

    基数排序是一种非比较型整数排序算法,它的原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。这种算法对于大数据量的排序尤其有效,因为它可以避免大量的比较操作,而是通过计数和分配来完成排序。 ...

    十大基本排序,堆排序,归并排序,鸡尾酒排序,计数排序,基数排序等

    根据给定文件的信息,我们可以总结出以下几种排序算法的相关知识点: ### 1. 堆排序(Heap Sort) 堆排序是一种基于比较的排序算法,它使用了一种特殊的完全二叉树结构——堆来完成排序过程。堆排序可以分为两种:...

    经典排序算法,有选择排序,冒泡排序,交换排序,谢尔排序,插入排序基数排序

    根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....

    基于双向链表的基数排序

    基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字拆分成数字位。并且按照数字位的值对数据项进行排序,这种方法不需要进行比较操作。 为了尽可能少的...

    C++写基数排序算法

    基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。在C++中实现基数排序,主要涉及到数组、计数排序以及位操作等技术。以下是关于基数排序及其C++实现的详细解释...

    C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序

    - C# 实现基数排序时,需要创建多个桶,按位进行分配和收集,适用于处理整数排序。 8. **希尔排序**(Shell Sort): - 希尔排序是插入排序的改进版,通过设置间隔序列来减少元素的比较次数,使元素能够更快地...

Global site tag (gtag.js) - Google Analytics