• 締切済み

modified bubble sort

 ソーティングについて教えてください.  ソーティングの手法に,バブルソートというものがあります(隣接するふたつを入れ替える).このソーティングでは,最大交換回数は要素数が n のとき, n(n-1)/2 となります.  隣接する要素の交換に加え,先頭と最後の要素の入れ替えも可能だとすると(イメージとしては,サイクリックなバブルソートです),最大交換回数は n^2/4 となるそうです.  この n^2/4 になる,という理由が分かりません(普通のバブルソートが n(n-1)/2 になるのは理解できます).どなたかご教授頂ければと思います.

みんなの回答

  • jmh
  • ベストアンサー率23% (71/304)
回答No.2

No1.jmh です。 ごめんなさい。最初に頭とお尻を交換するんですね。 n=3のときは、312→213→123(など)の2回が最悪ですね…たぶん。 でも、これって初回でしか頭とお尻の交換ができないのだから、nのサイクリックバブルの最大交換回数は、(n-1)のバブル+1回ぐらいになるのではないでしょうか? 例えば(5^2/4=6.25ですが)25431を昇順に並べ替えるには7回交換が必要だと思います。 25431  →15432   →14532    →14352     →14325  →13425   →13245  →12345

  • jmh
  • ベストアンサー率23% (71/304)
回答No.1

n=3のとき、3^2/4=2.25ですけど…。 321を、そのバブルの亜種で並べ替えるとき、 パス1  →3と2を比較、交換する →231  →3と1を比較、交換する →213  →3と2を比較、交換しない→213 パス2  →2と1を比較、交換する →123  →2と3を比較、交換しない→123  →3と1を比較、交換しない→123 交換3回となりませんか?

関連するQ&A