- 締切済み
modified bubble sort
ソーティングについて教えてください. ソーティングの手法に,バブルソートというものがあります(隣接するふたつを入れ替える).このソーティングでは,最大交換回数は要素数が n のとき, n(n-1)/2 となります. 隣接する要素の交換に加え,先頭と最後の要素の入れ替えも可能だとすると(イメージとしては,サイクリックなバブルソートです),最大交換回数は n^2/4 となるそうです. この n^2/4 になる,という理由が分かりません(普通のバブルソートが n(n-1)/2 になるのは理解できます).どなたかご教授頂ければと思います.
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- jmh
- ベストアンサー率23% (71/304)
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)
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回となりませんか?