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

sort conference

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Catupper Catupper
July 13, 2014
110

sort conference

Avatar for Catupper

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) • やったぜ