import Foundation
class QuickSortSolution {
func sort(_ n: [Int]) -> [Int] {
var s = n
quickSort(&s, 0, n.count - 1)
return s
}
func quickSort(_ n: inout [Int],_ left: Int,_ right: Int) {
if left < right {
let mid = partition(&n, left, right)
quickSort(&n, left, mid - 1)
quickSort(&n, mid + 1, right)
}
}
func partition(_ n: inout [Int],_ left1: Int,_ right1: Int) -> Int {
let temp = n[left1]
var left = left1
var right = right1
while left < right {
while left < right && n[right] >= temp {
right -= 1
}
n[left] = n[right]
while left < right && n[left] <= temp{
left += 1
}
n[right] = n[left]
}
n[left] = temp
return left
}
}
算法思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
github地址:https://github.com/cubegao/LeetCode