美文网首页
基数排序的代码

基数排序的代码

作者: BrianAguilar | 来源:发表于2015-10-08 21:51 被阅读40次

接上一篇文章,还是那个题目,用基数排序来实现。不足之处希望各位前辈指正

题目:给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素均小于等于2000。

测试样例:
排序前[1,2,3,5,2,3],6
排序后[1,2,2,3,3,5]

9.基数排序
<code>
import java.util.*;
public class RadixSort {
public int[] radixSort(int[] A, int n) {
// write code here
if(null==A||n<=1)
return A;
radix(A,10,3,n);
return A;
}
private void radix(int[] A, int radix, int d,int n){//传入的d为3(考虑分解为个位十位百位)
int[] temp = new int[n];//临时数组
int[] buckets = new int[radix];//radix为10,按10进制拆分(10个桶)
//循环中rate用于保存当前计算的位,十位时rate=10
for(int i=0,rate=1;i<d;i++){//
Arrays.fill(buckets,0);//buckets数组中全部为0
System.arraycopy(A,0,temp,0,n);//将A中元素复制进临时数组缓存
for(int j=0;j<n;j++){
//计算数据指定位上的子关键字
int subKey = (temp[j]/rate)%radix;
buckets[subKey]++;
}
for(int j=1;j<radix;j++){
buckets[j] = buckets[j]+buckets[j-1];
}
//按子关键字对指定数据进行排序
for(int m=n-1;m>=0;m--){
int subKey = (temp[m]/rate)%radix;
A[--buckets[subKey]] = temp[m];
}
rate *= radix;
}
}
}
</code>
补充说明:排序算法是否稳定指的是数组中重复元素在排序前后的相对位置是否发生改变,若不改变则算法稳定,否则不稳定。

稳定的排序算法有:冒泡排序、插入排序、计数排序、基数排序和归并排序
不稳定的排序算法有:选择排序、快速排序、希尔排序和

相关文章

  • 基数排序的代码

    接上一篇文章,还是那个题目,用基数排序来实现。不足之处希望各位前辈指正 题目:给定一个int数组A及数组的大小n,...

  • 基数排序及java代码实现

    前言:原文作者Leo-Yang。我不生产代码,我只是代码的搬运工 基数排序(radix sort)又称桶排序(bu...

  • 基数排序(c++) to be continued

    [TOC] 参考 基数排序算法的实现与优化 clickhouse 实现的基数排序源码 基数排序的性能优化 Radi...

  • 数组-基数排序

    采用基数排序方式对数组进行排序 基数排序百科:基数排序排序(Distribution Sort),属于分配式排序,...

  • day12-基数排序

    基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”...

  • swift经典算法-基数排序

    基数排序算法 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子...

  • 基数排序(Radix Sort)

    基本思想: 基数排序是一种有意思的排序,在看过其它比较排序后,基数排序真的很有意思。 基数排序(Radix Sor...

  • 算法面经--基数排序

    基数排序 一、算法思路 1.简单介绍 1)基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 基数排...

  • php-计数排序、基数排序、桶排序

    计数排序、基数排序、桶排序 时间复杂度 O(n) 计数排序 基数排序 桶排序

  • 数据结构之基数排序

    1.基数排序(桶排序)介绍 基数排序(radix sort)属于“分配式排序”(distribution sort...

网友评论

      本文标题:基数排序的代码

      本文链接:https://www.haomeiwen.com/subject/yeencttx.html