题解 | #排序#
排序
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) }