题解 | #排序#
排序
http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896
用swift写的快排运行超时,大神看看
func MySort ( _ arr: [Int]) -> [Int] {
var a = arr
quickSort(0, a.count - 1, &a)
return arr
}
func quickSort(_ left:Int, _ right:Int,_ arr:inout [Int]) {
print("before:\(arr)");
if arr.isEmpty || arr.count == 1 || left >= right{
return
}
var i = left,j = right
let pivot = arr[i]
while i < j{
while arr[j] >= pivot && j > i { //要注意 =
j -= 1
}
while arr[i] <= pivot && j > i {
i += 1
}
if(j>i){
arr.swapAt(i, j)
}
}
//将pivot放好,永远是和i直接交换位置
arr.swapAt(left, i)
quickSort(left, i-1, &arr) //这里要注意left和right的赋值,不是简单的写0
quickSort(i+1, right, &arr)
}
