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 基数排序算法详解 基数排序(Radix Sort)是一种非比较排序算法,它的基本思想是将待排序的数组按照位数(个位、十位、百位)进行划分,然后依次对每个位上的数字进行排序,最终得到有序的数组。基数排序的...
本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...
以下是关于标题"8种排序算法(Java实现)"及其描述中提到的排序算法的详细讲解: 1. **插入排序**: - **直接插入排序**:基本思想是从第二个元素开始,逐个与前面已排序的元素比较,找到合适的位置插入,保持已...
这里我们将深入探讨八大排序算法,并结合Java语言来理解它们的实现原理。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换式排序算法。它通过重复遍历待排序的元素列表,比较相邻元素并根据需要交换它们,...
本资源提供的Java实现包括了三种线性排序算法:桶排序(Bucket Sort)、基数排序(Radix Sort)和计数排序(Counting Sort)。这三种算法在特定条件下可以达到线性的平均或最好时间复杂度,效率相对较高。 1. **桶...
本资源"各种排序算法java实现"聚焦于将这些算法用Java代码来具体展示,对于学习和理解算法有着极大的帮助。 在Java中,我们通常会接触到以下几种经典的排序算法: 1. **冒泡排序**(Bubble Sort):通过不断交换...
测试文件`test.java`通常包含测试用例,用于验证基数排序算法的正确性。它会创建一个随机数组,调用`Basesort.java`中的`radixSort()`方法进行排序,并打印排序前后的数组以供验证。 在实际应用中,基数排序的时间...
下面是一个基于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. 插入排序(Insertion Sort) 插入排序是一种简单直观...
该资源提供了在Java中如何实现基数排序的全面指南。文档涵盖了基数排序的基本概念,包括如何对数组进行排序以及如何在Java中实现基数排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现基数排序,包括详细...
本资源包含了七种经典的排序算法实现,它们分别是冒泡排序、插入排序、递归排序(这里可能是指归并排序)、基数排序、快速排序、选择排序和希尔排序。下面我们将详细探讨这些排序算法的工作原理和实现方式。 1. **...
自己写的插入排序,随机产生1000次,每次产生0-1000个数,验证算法正确性。java实现。
本资料包包含了一个基于Java的排序算法实现,以及Eclipse工程文件,方便开发者在Eclipse集成开发环境中进行调试和学习。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,通过重复遍历待排序的列表,比较相邻...
在实际应用中,插入排序和现则排序因为实现简单,使用的比较多,但是在对效率要求比较高、且待排序数据量大的场合,还是应该采用时间复杂度较低的排序算法,因此对排序算法进行试验比较,增强实践认识很有必要。...
### 常用排序算法分析与实现(Java版) #### 插入排序 **1. 直接插入排序** 直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并...
基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字拆分成数字位。并且按照数字位的值对数据项进行排序,这种方法不需要进行比较操作。 为了尽可能少的...