十大排序算法之基数排序

Posted Alleria Windrunner

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十大排序算法之基数排序相关的知识,希望对你有一定的参考价值。

基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依此类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。 

算法描述

  • 取得数组中的最大数,并取得位数;

  • arr为原始数组,从最低位开始取每个位组成radix数组;

  • 对radix进行计数排序(利用计数排序适用于小范围数的特点);



代码实现

这里给出一份Java的代码实现:

public class BucketSorted {
public void bucketSort(int[] a) { if (a.length == 0) { return ; }
int i, sortedIndex = 0; int minValue = Integer.MAX_VALUE; int maxValue = Integer.MIN_VALUE; for (i = 0; i < a.length; i++) { minValue = Math.min(minValue, a[i]); maxValue = Math.max(maxValue, a[i]); }
int bucketCount = (maxValue - minValue) / a.length + 1; ArrayList<ArrayList<Integer>> buckets = new ArrayList<>(bucketCount); for (i = 0; i < bucketCount; i++) { buckets.add(new ArrayList<>()); }
for (i = 0; i < a.length; i++) { buckets.get((a[i] - minValue) / a.length).add(a[i]); }
for (i = 0; i < bucketCount; i++) { ArrayList<Integer> bucket = buckets.get(i); Collections.sort(bucket); for (i = 0; i < bucket.size(); i++) { a[sortedIndex ++] = bucket.get(i); } } }}


以上是关于十大排序算法之基数排序的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#十大经典排序之:基数排序 |计数排序

十大经典排序算法总结(基数排序)

经典十大排序算法(含升序降序,基数排序含负数排序)Java版完整代码建议收藏系列

[新星计划] Python手撕代码 | 十大经典排序算法

[新星计划] Python手撕代码 | 十大经典排序算法

吴裕雄--天生自然数据结构:十大经典排序算法——基数排序