计数排序
2020-12-26 本文已影响0人
Adder
计数排序
使用哈希表的原理,输出从顺序的结果列表
var testArr = [12, 72, 34, 95, 43, 5, 24, 67, 6, 8, 79, 55, 33, 24, 3];
let obj = {};
let max = testArr[0];
for (let i in testArr) {
obj[testArr[i]] = testArr[i] in obj ? obj[testArr[i]] + 1 : 1;
if (testArr[i] > max) {
max = testArr[i];
}
}
console.log('哈希表\n', obj)
const sortArr = [];
for (let i = 0; i <= max; i++) {
if (testArr.find(it => it === i)) {
if (obj[i] > 1) {
// 重复的数字
for (let j = 1; j <= obj[i]; j++) {
sortArr.push(i)
}
} else {
sortArr.push(i)
}
}
}
console.log(sortArr);