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<String>) {
    val input = intArrayOf(5, 1, 1, 2, 0, 0)
    val sortAnArray = SortAnArray()
    CommonUtils.printArray(sortAnArray.sortArray(input).toTypedArray())
}

有问题随时沟通

具体代码实现可以参考Github

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 据说全栈路线图是这样的,详细地连 DevOps 都不得不被掩盖住一截。 [图片上传失败...(image-9301...
    hylerrix阅读 916评论 5 6
  • 大写的转 目录 [冒泡排序][鸡尾酒排序] [选择排序] [插入排序][二分插入排序][希尔排序] [归并排序] ...
    Solang阅读 1,816评论 0 16
  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 1,478评论 0 1
  • 通过前面的知识,我们已经知道,有序的数据在查找时有极大的性能提升。很多查找都基于有序数据,但并不是所有的结构都能像...
    大大纸飞机阅读 1,197评论 0 1
  • 今天吃过午饭,我和爸爸、姥姥去大姨家看一伊妹妹。 到了大姨家楼门口,我看见大姨和哥哥去买东西,我和...
    杨欣仪小朋友阅读 293评论 0 0