排序学习 - 为了面对算法面试(3)

2017-10-17  本文已影响0人  AnnieAri

排序学习 - 为了面对算法面试(2) - 归并排序

// MARK: - 快速排序
func quickSort(arr: inout [Int],startIndex: Int,endIndex: Int){
    guard startIndex < endIndex else{ return }
    var i = startIndex,j = endIndex,key = arr[startIndex]
    //当出现 i == j 说明这一组已经排序完毕
    while i < j {
        //从右边寻找比key大的值 把这个值给a[i]
        while i < j && arr[j] >= key {
            j -= 1
        }
        arr[i] = arr[j]
        //继续去从左边寻找比key小的值 把值给a[j]
        while i < j && arr[i] <= key {
            i += 1
        }
        arr[j] = arr[i]
    }
    //排序完毕 key值回归
    arr[i] = key
    //同样的方法 左侧排序  右侧排序
    quickSort(arr: &arr, startIndex: startIndex, endIndex: i)
    quickSort(arr: &arr, startIndex: i+1, endIndex: endIndex)
}

to be continue!
坑:后续学习后会补充随机快排,双路快排,三路快排的相关知识

上一篇下一篇

猜你喜欢

热点阅读