Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift and Timsort

Takanori Hirobe
September 19, 2021
490

Swift and Timsort

Swiftの標準ライブラリには数多くのアルゴリズムが用意されていますが、その中で最も頻繁に使われているものの1つはソートであると言えるでしょう。

そんなSwiftのソートアルゴリズムですが、具体的にどのようなアルゴリズムが採用されているかご存知でしょうか。
また、ソートアルゴリズムの重要な指標である時間計算量、空間計算量、安定性はどのような特徴を持っているでしょうか。

もし知らなければ、知っておいて損はないでしょう。5分で解説します。

Takanori Hirobe

September 19, 2021
Tweet

Transcript

  1. Swiftͷྺ࢙తͳࣄ৘ • Timsort͸҆ఆͳιʔτ • Swift 5.0Ҏ߱ • Swift 5.0ະຬͰ͸Introsort͕࢖ΘΕ͍ͯͨ •

    Introsort͸ෆ҆ఆͳιʔτ • SwiftͷόʔδϣϯʹΑͬͯιʔτͷ҆ఆੑ͕ҟͳΔ
  2. Swiftͷྺ࢙తͳࣄ৘ • Timsort͸҆ఆͳιʔτ • Swift 5.0Ҏ߱ • Swift 5.0ະຬͰ͸Introsort͕࢖ΘΕ͍ͯͨ •

    Introsort͸ෆ҆ఆͳιʔτ • SwiftͷόʔδϣϯʹΑͬͯιʔτͷ҆ఆੑ͕ҟͳΔ • ιʔτ݁Ռ͕ҟͳΔՄೳੑ͕͋Δ
  3. ࠷ޙʹ஫ҙ఺ • υΩϡϝϯτͰ͸҆ఆੑʹ͍ͭͯ͸อো͍ͯ͠ͳ͍ͷͰ஫ҙ • ҆ఆੑʹ͍ͭͯ͸ Implementation Detail (࣮૷ʹґଘ)ͱ͍͏ѻ͍ "The sorting

    algorithm is not guaranteed to be stable." https://developer.apple.com/documentation/swift/array/1688499-sort