计数统计
const countSort = (arr) => {
const obj = {
0:0,
1:0,
2:0
}
arr.forEach(item => item < 3 && obj[item]++);
return Object.keys(obj).reduce((prev, cur) => prev.concat(new Array(obj[cur]).fill(+cur)),[])
}
三路快排
const countSort = (arr) => {
let zero = 0;
let two = arr.length - 1;
let index = 0;
while(index < two) {
if(arr[index] === 0){
[arr[zero++], arr[index++]] = [arr[index], arr[zero]];
} else if(arr[index] === 2){
[arr[two--], arr[index]] = [arr[index], arr[two]]
} else {
index++;
}
}
return arr;
}