let origin = [1, 3, 43, 54, 99, 8, 7, 12, 6, 5]
func quickSort(_ array: [Int]) {
guard array.count > 1 else {
print("Wrong input")
return
}
var result = array
func quick_sort(_ array:inout [Int], _ low: Int, _ high: Int) {
guard low < high else {
return
}
let pivot = partition(&array, low, high)
quick_sort(&array, low, pivot - 1)
quick_sort(&array, pivot + 1, high)
}
func partition(_ array: inout [Int], _ low: Int, _ high: Int) -> Int {
var pivot = low
let value = array[high]
for i in low..<high {
if array[i] > value {
array.swapAt(i, pivot)
pivot += 1
}
}
array.swapAt(pivot, high)
return pivot
}
quick_sort(&result, 0, result.count - 1)
print("quick sort result: \(result)")
}
quickSort(origin)