function countingSort(arr) {
if (Array.isArray(arr)) {
let len = arr.length
// 找到最大值
let maxVal = Math.max(...arr);
// 找到最小值
let minVal = Math.min(...arr);
// 最大值与最小值的间距
let space = maxVal - minVal + 1;
// 设置间距大小的数组
let needArr = new Array(space).fill(0);
for (let i = 0; i < len; i++) {
needArr[arr[i] - minVal] = needArr[arr[i] - minVal] + 1; //当第一次计算时为0+1;第二次计算时为1+1
}
let res = [];
needArr.forEach((v, index) => {
while (v > 0) {
res.push(index + minVal);
v--;
}
})
return res;
}
}
console.log('countingSort', countingSort([38, 27, 43, 3, 9, 82, 10, 9]));
JavaScript排序算法:计数排序
最新推荐文章于 2023-12-04 14:44:36 发布
本文解析了JavaScript函数countingSort的实现过程,展示了如何利用计数排序对整数数组进行高效排序,包括找到最大值、最小值,计算间距,并通过计数数组和遍历来重构排序结果。
1680

被折叠的 条评论
为什么被折叠?



