package com.rao.sort;

import java.util.*;

/**
* @author Srao
* @className RadioSort
* @date 2019/12/10 18:17
* @package com.rao.sort
* @Description 基数排序
*/
public class RadioSort { /**
* 基数排序
* @param arr
* @return
*/
public static int[] radioSort(int[] arr){
//1.找出最大值
int n = arr.length;
int max = arr[];
for (int i = ; i < n; i++) {
if (max < arr[i]){
max = arr[i];
}
} //2.求出对大值的位数
int num = ;
while (max / > ){
num++;
max /= ;
} //3.创建桶
List<LinkedList<Integer>> bucketList = new ArrayList<>(); //4.初始化桶
for (int i = ; i < ; i++) {
bucketList.add(new LinkedList<>());
} //5.把每个数放到对应的桶当中
for (int i = ; i <= num; i++){
for (int j = ; j < n; j++) {
int index = (int) ((arr[j]/Math.pow(, i-)) % );
bucketList.get(index).add(arr[j]);
} //6.把桶中的数输出到原数组
int k = ;
for (int j = ; j < ; j++){
for (Integer integer : bucketList.get(j)) {
arr[k] = integer;
k++;
}
//清除桶中的元素
bucketList.get(j).clear();
}
}
return arr;
} public static void main(String[] args) {
int[] arr = new int[]{,,,,,,,};
System.out.println(Arrays.toString(arr));
arr = radioSort(arr);
System.out.println(Arrays.toString(arr));
}
}

  基数排序是按照个位,十位,百位。。。这种顺序来排序的。

  1.先比较数的个位,按照不同的大小放在10个桶里面,然后把桶中的数返回给原数组。

  2.然后比较十位,按照十位的大小把所有的数放在0-9这10个桶里面,然后把桶中的数返回给原数组。

  3.以此类推,在比较完最高位之后,数组中的数就是有序的了。

  

最新文章

  1. 学习笔记——k近邻法
  2. as3 代码加解密
  3. 【codevs 1565】【SDOI 2011】计算器 快速幂+拓展欧几里得+BSGS算法
  4. Bootstrap_下拉菜单
  5. JDBC中的ResultSet
  6. MySQL下划线特殊字符(Like 语句)
  7. Java基础-被final修饰的引用变量的指向
  8. rabbitMQ安装及部署
  9. 色谱峰的类型BB,BV,VB等都是什么意思
  10. Computer Science Theory for the Information Age-3: 高维空间中的高斯分布和随机投影
  11. 2014年25 款最新最棒的jQuery插件
  12. Ubuntu下Hadoop快速安装手册
  13. 502 bad gateway是什么意思
  14. TexturePacker 介绍
  15. iOS文件保存策略
  16. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
  17. 异步任务神器 Celery-入门
  18. js 获取getElementsTagName()方法返回值的内容
  19. docker 小结
  20. 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置

热门文章

  1. SpringBoot集成Spring Security(7)——认证流程
  2. Hanlp分词插件docker集群安装
  3. springboot kafka生产者
  4. ECMAScript 初探 - 基础篇
  5. vs2019 更新之后无法用ctrl+d再设置回来..
  6. Oracle函数sys_connect_by_path用法
  7. IOS手机 html5页面 数字变成蓝色链接的原因
  8. jquery关于移动端的点击事件解析
  9. R与金钱游戏:均线黄金交叉2
  10. 常见HTTP响应状态码