随州网站建设网上销售渠道
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()
排序(这里是数字升序排序)。然后,根据每个数字出现的次数,把该数字添加到结果数组中。
- 我们首先通过