快速排序 | Swift 版本

2020-12-16  本文已影响0人  无夜之星辰
// MARK: - 快排
// 输入一个数组,返回从小到大排序的数组
func quickSort<T: Comparable>(inputArray: [T]) -> [T] {
    if inputArray.count <= 1 {
        return inputArray
    } else {
        var resultArray: [T] = []
        let base = inputArray.first!
        var leftArray: [T] = []
        var rightArray: [T] = []
        for i in 1..<inputArray.count {
            if inputArray[i] < base {
                leftArray.append(inputArray[i])
            } else {
                rightArray.append(inputArray[i])
            }
        }
        resultArray.append(contentsOf: quickSort(inputArray: leftArray))
        resultArray.append(base)
        resultArray.append(contentsOf: quickSort(inputArray: rightArray))
        return resultArray
    }
}

test:

print(quickSort(inputArray: [3, 1, 2, 2.2, 2.2, 2.2]))
print(quickSort(inputArray: ["c", "d", "b", "a"]))

let date1 = Date.init(timeIntervalSince1970: 1000)
let date2 = Date.init(timeIntervalSince1970: 2000)
let date3 = Date.init(timeIntervalSince1970: 3000)
let date4 = Date.init(timeIntervalSince1970: 4000)
print(quickSort(inputArray: [date2, date3, date1, date4]))

result:

[1.0, 2.0, 2.2, 2.2, 2.2, 3.0]
["a", "b", "c", "d"]
[1970-01-01 00:16:40 +0000, 1970-01-01 00:33:20 +0000, 1970-01-01 00:50:00 +0000, 1970-01-01 01:06:40 +0000]
上一篇 下一篇

猜你喜欢

热点阅读