`
housen1987
  • 浏览: 344897 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

基数排序算法实现(Java版)

阅读更多
import java.util.ArrayList;

/**
 * @function:基数排序算法实现
 * */
public class RadixSort {

	// 构建一个二维数组,装载每次分配的数据
	private ArrayList[] tempList = new ArrayList[10];

	/**
	 * @function:构造方法,用于初始化RadixSort类
	 * */
	public RadixSort() {
		for (int i = 0; i < this.tempList.length; i++) {
			this.tempList[i] = new ArrayList();
		}
	}

	// 收集数据
	private String[] Collection(int length) {
		String[] a = new String[length];
		int k = 0;
		for (int i = 0; i < this.tempList.length; i++) {
			for (int j = 0; j < this.tempList[i].size(); j++) {
				a[k++] = (String) this.tempList[i].get(j);
			}
			this.tempList[i] = new ArrayList();
		}
		return a;
	}

	/**
	 * @function:分配数据
	 * @param: unsort 为需要排序的数组
	 * @param: index为需要按第几位分配
	 * */
	private void Distribution(String[] unsort, int index) {
		for (int i = 0; i < unsort.length; i++) {
			int j = Integer.parseInt(unsort[i].substring(index, index + 1));
			tempList[j].add(unsort[i]);
		}
	}

	/**
	 * @function:基数排序算法
	 * */
	public String[] radix(String[] a) {
		for (int i = 2; i >= 0; i--) {
			this.Distribution(a, i);
			a = this.Collection(a.length);
		}
		return a;
	}

	/**
	 * @function:打印数组
	 * */
	private void print(String[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}

	public static void main(String[] args) {
		RadixSort r = new RadixSort();
		String[] a = new String[] { "278", "109", "063", "930", "589", "333", "679" };
		// 打印数据
		r.print(a);
		// 基数排序
		a = r.radix(a);
		// 打印数据
		r.print(a);
	}
}

 

分享到:
评论

相关推荐

    基数排序算法 java实现

    基数排序算法的一个优点是稳定,即相等的元素在排序后不会改变它们原有的相对顺序。此外,由于其线性的复杂度,基数排序在处理大量数据时比许多其他排序算法更高效。然而,它并不适用于浮点数或非整数类型的数据,且...

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

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

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

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

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

    8中排序算法(java实现)

    以下是关于标题"8种排序算法(Java实现)"及其描述中提到的排序算法的详细讲解: 1. **插入排序**: - **直接插入排序**:基本思想是从第二个元素开始,逐个与前面已排序的元素比较,找到合适的位置插入,保持已...

    八大排序算法总结(含Java实现源代码)

    这里我们将深入探讨八大排序算法,并结合Java语言来理解它们的实现原理。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换式排序算法。它通过重复遍历待排序的元素列表,比较相邻元素并根据需要交换它们,...

    三种线性排序算法Java实现

    本资源提供的Java实现包括了三种线性排序算法:桶排序(Bucket Sort)、基数排序(Radix Sort)和计数排序(Counting Sort)。这三种算法在特定条件下可以达到线性的平均或最好时间复杂度,效率相对较高。 1. **桶...

    各种排序算法java实现

    本资源"各种排序算法java实现"聚焦于将这些算法用Java代码来具体展示,对于学习和理解算法有着极大的帮助。 在Java中,我们通常会接触到以下几种经典的排序算法: 1. **冒泡排序**(Bubble Sort):通过不断交换...

    java基数排序

    测试文件`test.java`通常包含测试用例,用于验证基数排序算法的正确性。它会创建一个随机数组,调用`Basesort.java`中的`radixSort()`方法进行排序,并打印排序前后的数组以供验证。 在实际应用中,基数排序的时间...

    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排序算法(桶排序,基数排序等)

    Java 中实现排序算法通常涉及到多种方法,每种算法都有其特定的适用场景和性能特点。下面将详细介绍标题和描述中提到的一些常见排序算法,并提供Java实现。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...

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

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

    Java 七种排序算法实现

    本资源包含了七种经典的排序算法实现,它们分别是冒泡排序、插入排序、递归排序(这里可能是指归并排序)、基数排序、快速排序、选择排序和希尔排序。下面我们将详细探讨这些排序算法的工作原理和实现方式。 1. **...

    基数排序 java实现

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

    排序算法JAVA实现,eclipse+txt

    本资料包包含了一个基于Java的排序算法实现,以及Eclipse工程文件,方便开发者在Eclipse集成开发环境中进行调试和学习。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,通过重复遍历待排序的列表,比较相邻...

    java多种排序算法的实现

    在实际应用中,插入排序和现则排序因为实现简单,使用的比较多,但是在对效率要求比较高、且待排序数据量大的场合,还是应该采用时间复杂度较低的排序算法,因此对排序算法进行试验比较,增强实践认识很有必要。...

    常用排序算法分析与实现(Java版)

    ### 常用排序算法分析与实现(Java版) #### 插入排序 **1. 直接插入排序** 直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并...

    基于双向链表的基数排序

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

Global site tag (gtag.js) - Google Analytics