javascript counting sort
const countingSort = arr => {
const min = arr.reduce((acc, v) => (acc < v ? acc : v))
const max = arr.reduce((acc, v) => (acc > v ? acc : v))
const count = new Map()
for (let i = min; i <= max; i++) {
count[i] = 0
}
for (let i = 0; i < arr.length; i++) {
count[arr[i]] += 1
}
const sortedArr = []
for (let i = min; i <= max; i++) {
while (count[i] > 0) {
sortedArr.push(i)
count[i]--
}
}
return sortedArr
}