`

java算法之基数排序

 
阅读更多
package com.hym.test.algorithms;

public class RadixSort {
	private int[] arrayTest = { 5, 26, 1, 783, 23, 2, 62, 394, 9, 46 };

	public void radixSort(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) {
		RadixSort sort = new RadixSort();
		sort.radixSort(sort.arrayTest, 10);

		for (int i = 0; i < sort.arrayTest.length; i++) {
			System.out.print(sort.arrayTest[i] + " ");
		}
	}
}


(radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。

http://baike.baidu.com/view/1170573.htm
分享到:
评论

相关推荐

    [Java算法-排序练习]基数排序.java

    该资源提供了在Java中如何实现基数排序的全面指南。文档涵盖了基数排序的基本概念,包括如何对数组进行排序以及如何在Java中实现基数排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现基数排序,包括详细...

    基数排序算法 java实现

    基数排序是一种非比较型整数排序算法,它的原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。这种算法对于大数据量的排序尤其有效,因为其时间复杂度为线性,即O(n*k),其中n是待排序的元素数量,k是每...

    详解Java常用排序算法-基数排序

    Java 基数排序算法详解 基数排序(Radix Sort)是一种非比较排序算法,它的基本思想是将待排序的数组按照位数(个位、十位、百位)进行划分,然后依次对每个位上的数字进行排序,最终得到有序的数组。基数排序的...

    java算法——基数排序/桶排序

    基数排序/桶排序 *统计将数组中的数字分配到桶中后,各个桶中的数字个数 *数组中每个数的每一位数根据大小分配到对应大小为0~9的桶 *将各个桶中的数字个数,转化成各个桶中最后一个数字的下标索引

    java基数排序

    本文将详细讲解Java中的基数排序,这是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序对于大数据量的整数排序具有很高的效率,尤其适用于处理多位数的数组。 ...

    Java排序算法(桶排序,基数排序等)

    在计算机科学中,排序算法是用于对一组数据进行排列的算法。...以上就是Java中实现的一些常见排序算法,每种算法都有其独特之处,适用于不同的数据特性和场景。在实际编程中,需要根据具体需求选择合适的排序算法。

    Java实现基数排序算法(源代码)

    ### Java实现基数排序算法 #### 实现原理 基数排序是一种非常高效的非比较型整数排序算法,它通过按数字的各个位数进行排序来实现序列的整体有序化。该算法的关键在于能够有效地处理多位数,避免了传统的两两比较...

    Radix Sort (基数排序)排序算法

    下面是一个基于Java语言的基数排序算法实现示例: ```java import java.util.*; class NumNode { byte[] data; NumNode next; NumNode(int ch, NumNode new_node) { int i = 0; data = new byte[10]; // ...

    Java语言实现基数排序代码分享

    Java语言实现基数排序代码分享是通过使用基数排序算法来对整数数组进行排序。 1. 基数排序算法思想: 基数排序算法的思想是依次按个位、十位、百位等来排序,每一个pos都有分配过程和收集过程。首先,需要确定最大...

    Java算法集锦,所有排序算法

    10. **基数排序**(Radix Sort):基数排序按照元素的位数从低位到高位进行排序,每一轮根据某一位进行桶排序。适用于整数排序,时间复杂度为O(kn),其中k是数字的最大位数。 了解和熟练掌握这些排序算法,不仅可以...

    基于双向链表的基数排序

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

    Java实现基数排序.rar

    Java作为一种多用途、面向对象的编程语言,提供了丰富的库和工具来实现各种排序算法,包括基数排序。本篇我们将深入探讨如何在Java中实现基数排序。 基数排序基于数字的位数,从最低有效位(Least Significant ...

    常用排序算法java演示

    7. **计数排序(Counting Sort)、桶排序(Bucket Sort)和基数排序(Radix Sort)**:这三种排序算法属于非比较型排序,不依赖于元素间的比较,而是基于特定的特性,如元素的范围、分布等。Java中实现这类排序通常...

    Java各种排序算法代码.zip

    冒泡排序是最简单的排序算法之一,通过重复遍历待排序的元素列表,比较相邻元素并交换位置,直至列表排序完成。在Java中,冒泡排序通常使用两层循环实现。 2. 插入排序(Insertion Sort): 插入排序通过创建一个...

    java实现基数排序算法

    基数排序的关键思想是按照数字的个位、十位、百位等逐个进行计数排序,从最低位到最高位。在每个位上,使用计数排序来稳定地排序数组。通过多次迭代,对所有位进行排序后,最终得到有序的数组。 在示例代码中,我们...

    基于java语言十大经典排序算法

    冒泡排序是最简单的排序算法之一,通过重复遍历数组,比较相邻元素并交换顺序,使得最大的元素逐渐“冒”到数组的一端。虽然效率较低,但对于小规模数据排序,仍然有其应用价值。 2. **选择排序(Selection Sort)**...

    JAVA排序算法集合

    根据给定文件的信息,本文将详细介绍Java中的五种主要排序算法:插入排序、交换排序、选择排序、归并排序以及基数排序。每种排序方法都包括了不同的变体和技术细节。 ### 一、插入排序 #### 1. 直接插入排序 直接...

    基数排序 java实现

    自己写的插入排序,随机产生1000次,每次产生0-1000个数,验证算法正确性。java实现。

    八种排序算法原理及Java实现( 冒泡排序+快速排序直接插入排序+希尔排序+选择排序+归并排序+基数排序)

    八种排序算法原理及Java实现是排序算法中的一种,包括冒泡排序、快速排序、直接插入排序、希尔排序、选择排序、归并排序和基数排序等。 冒泡排序是八种排序算法中的一种,属于交换排序。冒泡排序的基本思想是重复...

Global site tag (gtag.js) - Google Analytics