桶排序
function sortScore(arr) {
const initArr = new Array(11).fill(0, 0, 11); // index 代表分数(0-10分),初始化时,每个分数的人数为0
for (let i = 0; i < arr.length; i++) {
// 把得分的人数放到 initArr 中,比如 8 分有一个,initArr[8] + 1
initArr[arr[i]] += 1;
}
const sortArr = [];
// 按分数从高到底排序,有多人会得到相同的分数,所以要把人数循环一次,打印出分数
for (let i = 10; i >= 0; i--) {
if (initArr[i] > 0) {
for (let num = 0; num < initArr[i]; num++) {
sortArr.push(i);
}
}
}
console.log(sortArr); // [8, 5, 5, 3, 2]
}
const arr = [5, 3, 5, 2, 8];
sortScore(arr);
缺点:
- 排序的分数不能与人相对应
- 浪费空间
- 不能对小数进行排序