// 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]
网友评论