啥是计数排序
计数排序有点类似于穷举的味道,我们把数字中每个数字出现的次数都记录下来最后只要依次在组合起来。比如下图 9 出现了两次 就在数组中放入两个9
算法过程
- 获取数组中的最大值
- 把他们分类整理并记录每个数字出现的次数
- 重新整理输出数组
算法实现
function CountingSort(arr) {
let len = arr.length;
let max = Math.max.apply(null, arr);
let temp = new Array(max + 1).fill(null);
let result = [];
for (let i = 0; i < len; i++) {
temp[arr[i]] = temp[arr[i]] ? temp[arr[i]] + 1 : 1
}
temp.forEach((e, index) => {
if (e != null) {
for (let i = 0; i < e; i++) {
result.push(index)
}
}
})
return result
}
module.exports = CountingSort