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 发布