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