QuickSort


package
sort /** * QuckSort best case O(nlgn), worst case O(n^2) * worst case occurred in: * 1. all element sorted * 2. partition unbalanced * */ class QuickSort { fun sort(array: IntArray): IntArray { sortArray(array, 0, array.size - 1) printArray(array) return array } private fun printArray(array: IntArray) { println("") for (item in array) { print("$item ,") } } private fun sortArray(array: IntArray, left: Int, right: Int) { if (left >= right) { return } val pivotPosition = partition(array, left, right) sortArray(array, left, pivotPosition - 1) sortArray(array, pivotPosition + 1, right) } private fun partition(array: IntArray, left: Int, right: Int): Int { var i = left var j = right val pivot = array[j] while (i < j) { while (i < j && array[i] < pivot) { i++ } swap(array, i, j) while (i < j && array[j] >= pivot) { j-- } swap(array, i, j) } return i } private fun swap(array: IntArray, index1: Int, index2: Int) { val temp = array[index1] array[index1] = array[index2] array[index2] = temp } }

 quicksort是一个comparison-based的排序算法(heap sort,merge sort,插入都是)

转载于:https://www.cnblogs.com/johnnyzhao/p/11612076.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值