package syntax
fun main(args: Array<String>) {
val a = intArrayOf( 1,2,5,6,8,5,3,46,2,6,3,74,75,68,3,32,6)
QuickSort(a).sort().forEach {
i: Int -> print("$i, ")
}
}
class QuickSort(private val intArray: IntArray) {
fun sort(): IntArray {
sort(0,intArray.lastIndex)
return intArray
}
private fun sort(l: Int, r : Int): Unit {
if (l >= r){
return
}
var lv = l
var rv = r
val key = intArray[l]
while (lv < rv) {
while (lv < rv && intArray[rv] > key) {
rv--
}
while (lv < rv && intArray[lv] <= key) {
lv++
}
if (lv < rv) {
val p = intArray[lv]
intArray[lv] = intArray[rv]
intArray[rv] = p
}
}
val p = intArray[lv]
intArray[lv] = intArray[l]
intArray[l] = p
sort(l, lv-1)
sort(lv+1, r)
}
}