题解 | #排序#

排序

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)
}
全部评论

相关推荐

05-07 20:52
吉林大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务