Radix Sort

Run Settings
LanguageKotlin
Language Version
Run Command
fun IntArray.radixSort(): IntArray { var result = this val max = getMax() var place = 1 while (max / place > 0) { result = result.countingSort(place) place *= 10 } return result } fun IntArray.countingSort(place: Int): IntArray { val result = IntArray(size) val count = IntArray(10) for (i in 0 until result.size) { val digit = (this[i] / place) % 10 count[digit] += 1 } for (i in 1 until count.size) { count[i] += count[i - 1] } for (i in size - 1 downTo 0) { val digit = (this[i] / place) % 10 result[count[digit] - 1] = this[i] count[digit]-- } return result } fun IntArray.getMax(): Int { var mx = this[0] for (i in 1..size - 1) if (this[i] > mx) mx = this[i] return mx } fun main(args : Array<String>){ val mArray = intArrayOf(99, 44, 283, 0, 5, 16, 76, 2, 145) println(mArray.radixSort().contentToString()) }
Editor Settings
Theme
Key bindings
Full width
Lines