fun countOccurrences(array: MutableList<Int>, maxNumber: Int): Array<Int> {
val occurrences = Array<Int>(maxNumber + 1){0}
for (number in array) {
occurrences[number]++
}
return occurrences
}
fun countingSort(array: MutableList<Int>) {
val occurrences = countOccurrences(array, 100)
var index = 0
for (i in occurrences.indices) {
for (j in 1..occurrences[i]) {
array[index] = i
index++
}
}
}
fun main() {
val array = mutableListOf(7, 3, 0, 1, 5, 2, 5, 19, 10, 5)
countingSort(array)
println(array)
}
ZnVuIGNvdW50T2NjdXJyZW5jZXMoYXJyYXk6IE11dGFibGVMaXN0PEludD4sIG1heE51bWJlcjogSW50KTogQXJyYXk8SW50PiB7CiAgICB2YWwgb2NjdXJyZW5jZXMgPSBBcnJheTxJbnQ+KG1heE51bWJlciArIDEpezB9CgogICAgZm9yIChudW1iZXIgaW4gYXJyYXkpIHsKICAgICAgICBvY2N1cnJlbmNlc1tudW1iZXJdKysKICAgIH0KICAgICAgICAKICAgIHJldHVybiBvY2N1cnJlbmNlcwp9CgoKZnVuIGNvdW50aW5nU29ydChhcnJheTogTXV0YWJsZUxpc3Q8SW50PikgewogICAgdmFsIG9jY3VycmVuY2VzID0gY291bnRPY2N1cnJlbmNlcyhhcnJheSwgMTAwKQogICAgdmFyIGluZGV4ID0gMAogICAgCiAgICBmb3IgKGkgaW4gb2NjdXJyZW5jZXMuaW5kaWNlcykgewogICAgICAgIGZvciAoaiBpbiAxLi5vY2N1cnJlbmNlc1tpXSkgewogICAgICAgICAgICBhcnJheVtpbmRleF0gPSBpCiAgICAgICAgICAgIGluZGV4KysKICAgICAgICB9CiAgICB9Cn0KCmZ1biBtYWluKCkgewogICAgdmFsIGFycmF5ID0gbXV0YWJsZUxpc3RPZig3LCAzLCAwLCAxLCA1LCAyLCA1LCAxOSwgMTAsIDUpCgogICAgY291bnRpbmdTb3J0KGFycmF5KQoKICAgIHByaW50bG4oYXJyYXkpCn0=