• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マージソートについて)

マージソートの要素の比較と交換回数を計測する方法

このQ&Aのポイント
  • マージソートの要素の比較と交換回数を計測する方法について説明します。
  • 配列aをマージソートする際、配列bを作業用配列として使用します。
  • マージ処理の実行回数をカウントする配列sを用意し、マージ処理を行うタイミングでカウントします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sirn
  • ベストアンサー率14% (8/55)
回答No.3

ここまでくると完全に回答になってしまうのですが......... マージの部分だけを数えると、出力結果がNlogNになります。 for(k = low; k <= high; k++){ //ここで数える if(b[i] <= b[j]){ a[k] = b [i++]; } else{ a[k] = b[j--]; } }

ise-nobu
質問者

お礼

レスありがとう御座います! for文の前とif文前で模索していたのですがif文前でしたか。。。 明日もう一度値を変えて検討してみようと思います!

その他の回答 (2)

回答No.2

とりあえず、比較の回数だけカウントすればいいんじゃないでしょうか。 if文の前にcount++;とか入れれば、n*log2(n)ぐらいの数値が出ると思いますが。。

ise-nobu
質問者

お礼

レスありがとう御座います! 交換というより比較で考えた方がやはりよさそうですかね。。。orz if文前でもう一度検討してみたいと思います!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

う~ん, 確かにマージソートだと「交換する」というイメージではないですね. 課題かなにかなら, 出した人に聞いてみればいいんじゃないでしょうか. まあ, 「マージ処理の実行回数をカウントする」のになぜ配列が必要なのかもよくわからんけど.

ise-nobu
質問者

お礼

レスありがとう御座います! 学年の違う講義課題だったので聞くに聞けずで。。。(汗 やはり交換ってイメージは考えにくいですよね。 比較の視点からいろいろまた模索してみたいと思います!

関連するQ&A