swift, introArray
swift의 sort는 어떤 알고리즘으로 만들어졌을까?
var names = ["names","ni","dd"].sorted(by:{ (s1:String, s2:String) -> Bool in
return s1 > s2
})sorted라는 내장 함수이다. 이함수는 배열의 두개의 인자를 받아서 비교해서 큰값으로 재정렬이되 배열로만들어 반환해준다.
sorted 함수는 어떻게 생겼을까?
public func sorted(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> [Element] @_inlineable
public func sorted(
by areInIncreasingOrder:
(Element, Element) throws -> Bool
) rethrows -> [Element] {
var result = ContiguousArray(self)
try result.sort(by: areInIncreasingOrder)
return Array(result)
} @_inlineable
public mutating func sort(
by areInIncreasingOrder:
(Element, Element) throws -> Bool
) rethrows {
let didSortUnsafeBuffer: Void? =
try _withUnsafeMutableBufferPointerIfSupported {
(bufferPointer) -> Void in
try bufferPointer.sort(by: areInIncreasingOrder)
return ()
}
if didSortUnsafeBuffer == nil {
try _introSort(
&self,
subRange: startIndex..<endIndex,
by: areInIncreasingOrder)
}
}