在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 官宣新年祝福语简短