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

sort conference

Catupper
July 13, 2014
97

sort conference

Catupper

July 13, 2014
Tweet

Transcript

  1. 登場人物 • 配列くん • 比較演算子くん • ヒープソートくん • マージソートくん •

    カウントソートくん • ラディックスソートくん • バケツソートくん
  2. 登場人物 • 配列くん • 比較演算子くん • ヒープソートくん • マージソートくん •

    カウントソートくん • ラディックスソートくん • バケツソートくん • 期待値の線形性くん • 中心極限定理くん • 大数の法則くん
  3. 登場人物 • 配列くん • 比較演算子くん • ヒープソートくん • マージソートくん •

    カウントソートくん • ラディックスソートくん • バケツソートくん • 期待値の線形性くん • 中心極限定理くん • 大数の法則くん • 金子みすゞ
  4. カウントソート • 本名 counting sort • 日本名 バケツソート (すごく紛らわしい) •

    与えられる値の種類が少なく、範囲も狭く、整数であ るときに使える • それぞれいくつあるか数えるだけ • 正の字システム • どう考えてもO(N)
  5. カウントソート • 3 1 4 1 5 9 2 •

    1が2つ • 2が1つ • 3が1つ • 4が1つ • 5が1つ • 6が0つ • 7が0つ • 8が0つ • 9が1つ • よって合わせたら • 1 1 2 3 4 5 9
  6. ラディックスソート • 本名 radiz sort • 日本名 基数ソート (すごくダサい) •

    与えられる値を桁ごとに小さい位からカウントソー トをする。桁数が定数ならばO(N)になる
  7. ラディックスソート • 13 24 81 92 5 12 • 1の位でカウントソート

    • 81 92 12 13 24 5 • 10の位でカウントソート • 05 12 13 24 81 92 • 結果 • 5 12 13 24 81 92 • やったぜ
  8. バケツソート • 本名 bucket sort • 日本名 (ない) 一部直訳文献では「バケツソート」 • 値が一様に分布するとき、計算量の期待値が

    O(N)になる。 • 値の範囲をN等分してそれぞれの範囲に入るもの でグループ分け。グループ内では挿入ソートなどを する。最後に合成。
  9. バケツソート • 72 66 24 4 12 93 61 39

    52 23 • 0~99の範囲で一様分 布という前提 • N=10なので10等分 • わける • [4] [12] [24 23] [39] [] [52] [66 61] [72] [] [93] • グループごとにソート • [4] [12] [23 24] [39] [] [52] [61 66] [72] [] [93] • 結果 • 4 12 23 24 39 52 61 66 72 93
  10. 平均計算量の証明 • グループiに入る要素数 をn[i] • p[i][j]はグループiにj番目 の要素が入るかどうか (1 or 0)

    • 総計算量はn[i]^2の総 和 • p[i][j]はiを固定すると独 立。期待値は1/N • よって総計算量の期待 値はE[Σ(Σp[i][j])^2] • Kind of 計算頑張ってく ださい • Σ(1 + 1/n)とかになる • O(N) • やったぜ