func quickSort(data:[NSInteger])->[NSInteger]{
if data.count<=1 {
return data
}
var left:[NSInteger]=[]
var right:[NSInteger]=[]
let pivot:NSInteger=data[data.count-1]
for index in 0..<data.count-1 {
if data[index]<pivot {
left.append(data[index])
}else{
right.append(data[index])
}
}
var result=quickSort(left)
result.append(pivot)
let rightResult=quickSort(right)
result.appendContentsOf(rightResult)
return result
}
func partition(inout data:[NSInteger],low:NSInteger,high:NSInteger) -> NSInteger {
let root = data[high]
var index = low
for i in low...high {
if data[i]<root {
if i != index {
swap(&data[i], &data[index])
}
index = index+1
}
}
if high != index {
swap(&data[high], &data[index])
}
return index
}
func quickSort(inout data:[NSInteger],low:NSInteger,high:NSInteger) -> Void {
if low>high {
return
}
let sortIndex = partition(&data, low: low, high: high)
quickSort(&data, low: low, high: sortIndex-1)
quickSort(&data, low: sortIndex+1, high: high)
}
var data:[NSInteger] = [1,2,3,2,4,8,9,10,19,0]
var result=quickSort(data)
print("FlyElephant方案1:-\(result)")
var arr:[NSInteger] = [10,3,17,8,5,2,1,9,5,4]
quickSort(&arr, low: 0, high: arr.count-1)
print("FlyElephant方案2:-\(arr)")
import UIKit
extension Array {
var decompose : (head: Element, tail: [Element])? {
return (count > 0) ? (self[0], Array(self[1..<count])) : nil
}
}
func qsortDemo(input: [Int]) -> [Int] {
if let (pivot, rest) = input.decompose {
let lesser = rest.filter { $0 < pivot }//这里是小于于pivot基数的分成一个数组
let greater = rest.filter { $0 >= pivot }//这里是大于等于pivot基数的分成一个数组
return qsortDemo(lesser) + [pivot] + qsortDemo(greater)//递归 拼接数组
} else {
return []
}
}
var a:[Int] = [1,2,4,6,2,4,3,7,8]
qsortDemo(a)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有