function sort012Array(arr: number[]) {
let lo: number = 0;
let curr: number = 0;
let hi: number = arr.length - 1;
while (curr <= hi) {
switch (arr[curr]) {
case 0:
[arr[lo], arr[curr]] = [arr[curr], arr[lo]];
lo++;
curr++;
break;
case 1:
curr++;
break;
case 2:
[arr[curr], arr[hi]] = [arr[hi], arr[curr]];
hi--;
break;
}
}
}
const arr: number[] = [1, 2, 2, 0, 1, 1, 0, 2, 0, 1, 0, 0, 1];
sort012Array(arr);
console.log(arr);
/*
run:
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2]
*/