function hashSort(arr) {
// 创建一个哈希表(对象),统计每个数字出现的次数
let hashMap = {};
arr.forEach(num => {
if (hashMap[num]) {
hashMap[num] += 1;
} else {
hashMap[num] = 1;
}
});
// 根据哈希表的键值对构建排序后的数组
let sortedArr = [];
Object.keys(hashMap).sort((a, b) => a - b).forEach(key => {
// 每个数字按出现次数添加到结果数组
for (let i = 0; i < hashMap[key]; i++) {
sortedArr.push(parseInt(key));
}
});
return sortedArr;
}
// 测试
let arr = [4, 3, 2, 1, 3, 2, 5, 4];
console.log(hashSort(arr)); // 输出: [1, 2, 2, 3, 3, 4, 4, 5]
-
哈希表(对象)统计元素的频次:
- 我们用一个 JavaScript 对象
hashMap
来统计每个数字在数组中出现的次数。键是数组中的数字,值是数字出现的次数。
- 我们用一个 JavaScript 对象
-
构建排序后的数组:
- 我们首先通过
Object.keys()
获取哈希表中的所有键(即数字),并通过sort()
排序(这里是数字升序排序)。然后,根据每个数字出现的次数,把该数字添加到结果数组中。
- 我们首先通过