kotlin 版本的快速排序

快速排序kotlin实现

fun qSort(array: IntArray, start: Int = 0, end: Int = array.size - 1) {
    if (start < end) {
        var s = start
        var e = end
        val baseNum = array[s]
        while (e != s) {
            while (e > s && baseNum <= array[e]) e-- // 从右边开始找到比baseNum小的,然后交换
            array[s] = array[e]
            while (e > s && baseNum >= array[s]) s++ // 从左边开始找到比baseNum大的,然后交换
            array[e] = array[s]
        }
        // e == s 代表e这个坐标左边的都比它小,右边的都比他大(或者相等)
        array[s] = baseNum
        // 递归分段排序
        qSort(array, start, s - 1)
        qSort(array, s + 1, end)
    }
}

fun main() {
    val arr = intArrayOf(35, 24, 61, 232, 48, 79, 121, 29, 69, 49)
    qSort(arr)
    arr.forEach(::println)
}
复制代码

转载请注明出处

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享