int[] array = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};
// 只需要修改成对应的方法名就可以了
radixSort(array);
System.out.println(Arrays.toString(array));
}
/**
* Description: 基数排序
*
* @param array
* @return void
* @author JourWon
* @date 2019/7/11 23:45
*/
public static void radixSort(int[] array) {
if (array == null || array.length <= 1) {
return;
}
int length = array.length;
// 每位数字范围0~9,基为10
int radix = 10;
int[] aux = new int[length];
int[] count = new int[radix + 1];
// 以关键字来排序的轮数,由位数最多的数字决定,其余位数少的数字在比较高位时,自动用0进行比较
// 将数字转换成字符串,字符串的长度就是数字的位数,字符串最长的那个数字也拥有最多的位数
int x = Arrays.stream(array).map(s -> String.valueOf(s).length()).max().getAsInt();
// 共需要d轮计数排序, 从d = 0开始,说明是从个位开始比较,符合从右到左的顺序
for (int d = 0; d < x; d++) {
// 1. 计算频率,在需要的数组长度上额外加1
for (int i = 0; i < length; i++) {
// 使用加1后的索引,有重复的该位置就自增
count[digitAt(array[i], d) + 1]++;
}
// 2. 频率 -> 元素的开始索引
for (int i = 0; i < radix; i++) {
count[i + 1] += count[i];
}
// 3. 元素按照开始索引分类,用到一个和待排数组一样大临时数组存放数据
for (int i = 0; i < length; i++) {
// 填充一个数据后,自增,以便相同的数据可以填到下一个空位
aux[count[digitAt(array[i], d)]++] = array[i];
}
// 4. 数据回写
for (int i = 0; i < length; i++) {
array[i] = aux[i];
}
// 重置count[],以便下一轮统计使用
for (int i = 0; i < count.length; i++) {
count[i] = 0;
}
}
}
/**
* Description: 根据d,获取某个值的个位、十位、百位等,d = 0取出个位,d = 1取出十位,以此类推。对于不存在的高位,用0补
*
* @param value
* @param d
* @return int
* @author JourWon
* @date 2019/7/11 23:46
*/
private static int digitAt(int value, int d) {
return (value / (int) Math.pow(10, d)) % 10;
}
## 最后
分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。
#### 面试经验技巧篇
* 经验技巧1 如何巧妙地回答面试官的问题
* 经验技巧2 如何回答技术性的问题
* 经验技巧3 如何回答非技术性问题
* 经验技巧4 如何回答快速估算类问题
* 经验技巧5 如何回答算法设计问题
* 经验技巧6 如何回答系统设计题
* 经验技巧7 如何解决求职中的时间冲突问题
* 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
* 经验技巧9 在被企业拒绝后是否可以再申请
* 经验技巧10 如何应对自己不会回答的问题
* 经验技巧11 如何应对面试官的“激将法”语言
* 经验技巧12 如何处理与面试官持不同观点这个问题
* 经验技巧13 什么是职场暗语
![](https://s2.51cto.com/images/20210908/1631038587297604.jpg)
#### 面试真题篇
* 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
* 真题详解2 某知名社交平台软件工程师笔试题
* 真题详解3 某知名安全软件服务提供商软件工程师笔试题
* 真题详解4 某知名互联网金融企业软件工程师笔试题
* 真题详解5 某知名搜索引擎提供商软件工程师笔试题
* 真题详解6 某初创公司软件工程师笔试题
* 真题详解7 某知名游戏软件开发公司软件工程师笔试题
* 真题详解8 某知名电子商务公司软件工程师笔试题
* 真题详解9 某顶级生活消费类网站软件工程师笔试题
* 真题详解10 某知名门户网站软件工程师笔试题
* 真题详解11 某知名互联网金融企业软件工程师笔试题
* 真题详解12 国内某知名网络设备提供商软件工程师笔试题
* 真题详解13 国内某顶级手机制造商软件工程师笔试题
* 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
* 真题详解15 某著名社交类上市公司软件工程师笔试题
* 真题详解16 某知名互联网公司软件工程师笔试题
* 真题详解17 某知名网络安全公司校园招聘技术类笔试题
* 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题
![](https://s2.51cto.com/images/20210908/1631038587369389.jpg)
> 需要这份文档的朋友可以[点击蓝色传送门](https://gitee.com/vip204888/java-p7)即可免费获取!
资料整理不易,点个关注再走吧
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/145649.html