LeetCode之Sort an Array(Kotlin)

问题:



方法:
这题用了快速排序,当然堆排序或者归并排序都可以,本质上都是利用了二分的思想。

具体实现:

class SortAnArray {
    fun sortArray(nums: IntArray): IntArray {
        quickSort(nums, 0, nums.lastIndex)
        return nums
    }

    private fun quickSort(nums: IntArray, start: Int, end: Int) {
        if (start > end) {
            return
        }
        var head = start
        var tail = end
        var temp: Int
        while (head < tail) {
            while (head < tail && nums[tail] >= nums[start]) {
                tail--
            }
            while (head < tail && nums[head] <= nums[start]) {
                head++
            }
            if (head < tail) {
                temp = nums[head]
                nums[head] = nums[tail]
                nums[tail] = temp
            }
        }
        temp = nums[head]
        nums[head] = nums[start]
        nums[start] = temp
        quickSort(nums, start, head - 1)
        quickSort(nums, head + 1, end)
    }
}

fun main(args: Array) {
    val input = intArrayOf(5, 1, 1, 2, 0, 0)
    val sortAnArray = SortAnArray()
    CommonUtils.printArray(sortAnArray.sortArray(input).toTypedArray())
}

有问题随时沟通

具体代码实现可以参考Github

你可能感兴趣的:(LeetCode之Sort an Array(Kotlin))