523 : 先頭のソート I

リストをソートするための次のアルゴリズムを考える。

  1. リストの先頭から始めて、隣接する要素の各ペアを順番に調べる。

  2. 要素の順序が正しくない場合:

    1. ペアの最小の要素をリストの先頭に移動する。

    2. 手順 1 からプロセスを再開する。

  3. すべてのペアが正しい順序になったら停止する。

例えばリスト {4,1,3,2}\{4,1,3,2\} は次のようにソートされる。

  • 4132\underline{4\,1}\,3\,2 (4と1は順序が間違っているため、1をリストの先頭に移動する)

  • 14321\,\underline{4\,3}\,2 (4と3は順序が間違っているので、3をリストの先頭に移動する)

  • 3142\underline{3\,1}\,4\,2 (3と1は順序が間違っているので、1をリストの先頭に移動する)

  • 13421\,3\,\underline{4\,2} (4と2は順序が間違っているため、2をリストの先頭に移動する)

  • 2134\underline{2\,1}\,3\,4 (2と1は順序が間違っているので、1をリストの先頭に移動する)

  • 12341\,2\,3\,4 (リストはソートされた)

リスト LL をソートするためにステップ2aを実行する回数を F(L)F(L) とする。 例えば、F({4132})=5F(\{\,4\,1\,3\,2\,\}) = 5である。

E(n)E(n) を、整数 {1,2,,n}\{1, 2, \dots, n\} のすべての順列 PP に対する F(P)F(P)期待値とする。 E(4)=3.25E(4) = 3.25, E(10)=115.725E(10) = 115.725が与えられている。

E(30)E(30) を求めよ。答えは小数点以下2桁に丸めて与えよ。

最終更新

役に立ちましたか?