Swift 快速排序

快速排序是很常见的算法, 那么Swift要如何实现呢? 下面提供了一种思路

    func quickSortWithArray<T:Comparable>(array: [T]) -> [T] {
        if array.count == 0 || array.count == 1 {
            return array
        }
        let baseIndex = Int(arc4random()) % array.count
        let baseNumber = array[baseIndex]
        var unsortedArray = Array(array)
        unsortedArray.remove(at: baseIndex)
        var leftArray = [T]()
        var rightArray = [T]()
        for curNumber in unsortedArray {
            if (curNumber < baseNumber) {
                leftArray.append(curNumber)
            } else {
                rightArray.append(curNumber)
            }
        }
        var sortedArray = [T]()
        for num in quickSortWithArray(array: leftArray) {
            sortedArray.append(num)
        }
        sortedArray.append(baseNumber)
        for curNumber in quickSortWithArray(array: Array(rightArray)) {
            sortedArray.append(curNumber)
        }
        return sortedArray
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容