Heap Sort

Run Settings
LanguageKotlin
Language Version
Run Command
var heapSize = 0 fun left(i: Int): Int { return 2 * i } fun right(i: Int): Int { return 2 * i + 1 } fun swap(A: IntArray, i: Int, j: Int) { var temp = A[i] A[i] = A[j] A[j] = temp } fun max_heapify(A: IntArray, i: Int) { var l = left(i); var r = right(i); var largest: Int; if ((l <= heapSize - 1) && (A[l] > A[i])) { largest = l; } else largest = i if ((r <= heapSize - 1) && (A[r] > A[l])) { largest = r } if (largest != i) { swap(A, i, largest); max_heapify(A, largest); } } fun buildMaxheap(A: IntArray) { heapSize = A.size for (i in heapSize / 2 downTo 0) { max_heapify(A, i) } } fun heap_sort(A: IntArray) { buildMaxheap(A) for (i in A.size - 1 downTo 1) { swap(A, i, 0) heapSize = heapSize - 1 max_heapify(A, 0) } } fun main(arg: Array<String>) { var A = intArrayOf(99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0) heap_sort(A) println("Sorted array is : ") for (i in 0 until A.size) print("${A[i]} ") }
Editor Settings
Theme
Key bindings
Full width
Lines