在JavaScript中实现计数排序
我们需要编写一个JavaScript函数,该函数接受一个数字数组并使用计数排序算法对其进行排序。
如果知道最大值,则可以使用计数排序算法对线性时间和空间中的数字数组进行排序。使用最大值创建一个具有该大小的数组,以计算每个索引值的出现。
然后,我们将计数为非零的所有索引提取到结果数组中。
首先,我们将使用一个循环来找出数组的最大元素,一旦有了,我们将使用计数排序对数组进行排序。
示例
const arr = [4, 3, 1, 2, 3];
const findMaximum = arr => arr.reduce((acc, val) => val > acc ? val: acc, Number.MIN_VALUE)
const countingSort = (arr = []) => {
const max = findMaximum(arr);
const counts = new Array(max + 1);
counts.fill(0);
arr.forEach(value => counts[value]++);
const res = [];
let resultIndex = 0;
counts.forEach((count, index) => {
for (let i = 0; i < count; i++) {
res[resultIndex] = index;
resultIndex++;
};
});
return res;
};
console.log(countingSort(arr));输出结果
控制台中的输出将是-
[ 1, 2, 3, 3, 4 ]
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短