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,插入都是)

posted @   johnny_zhao  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示