マージソートの要素の比較と交換回数を計測するプログラムを作っているのですが、マージのどの段階が交換処理になるのかが分からず困っています。
マージ処理の実行回数をカウントする配列sを設けて処理をカウントする場合、以下のプログラムだとどのタイミングでカウントすればよいでしょうか? ちなみに配列aは初めに値を割り振った配列で、配列bは別途で用意した作業用配列です。
最後のfor文やif文付近で配列の値を変化させて計測してみたのですが、計算量に合った動きをしてくれませんorz
void merge_sort(int a[], int low, int high){
int mid, i, j, k;
if(low >= high)
return;
mid = (low + high)/2;
merge_sort(a, low, mid);
merge_sort(a, mid+1, high);
for(i = low; i <= mid; i++)
b[i] = a[i];
for(i = mid+1, j=high; i <= high; i++, j--)
b[i] = a[j];
i = low; j = high;
for(k = low; k <= high; k++){
if(b[i] <= b[j]){
a[k] = b [i++];
} else{
a[k] = b[j--];
}
}
}
No.2
- 回答日時:
とりあえず、比較の回数だけカウントすればいいんじゃないでしょうか。
if文の前にcount++;とか入れれば、n*log2(n)ぐらいの数値が出ると思いますが。。
レスありがとう御座います!
交換というより比較で考えた方がやはりよさそうですかね。。。orz
if文前でもう一度検討してみたいと思います!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 コードを書いたのですが上手く実行出来なかったです。どこが間違ってますか? 【作成したいもの】 1 2022/05/04 11:36
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 車検・修理・メンテナンス Nissan ROUGE 2011年式のトランスミッションオイルの液量を確認しているのですが、このオ 2 2022/10/21 23:08
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
VBで作った乱数を一度も重複さ...
-
VBAで配列の計算
-
IF関数でEmpty値を設定する方法。
-
複数のテキストボックスに同じ...
-
C言語 重複しない4ケタの乱数...
-
パソコンキーボードで時分秒を...
-
動的配列が存在(要素が有る)か...
-
EXCEL VBA で、0から?1から?
-
VB.net 引数で配列変数を渡す際...
-
【MFC】GetCount()とGetSize()...
-
マージソートについて
-
MicroSoft BasicのDim文とVisua...
-
Excel VBA 多段階配列の宣言の仕方
-
C言語のread関数に関するファイ...
-
動的配列と固定長配列の違いに...
-
変数を動的に作るには?
-
ジャグ配列とは
-
配列プロパティをREDIMする方法...
-
For文と配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
パソコンキーボードで時分秒を...
-
VBAで配列の計算
-
EXCEL VBA で、0から?1から?
-
変数を動的に作るには?
-
VB.net 引数で配列変数を渡す際...
-
動的配列が存在(要素が有る)か...
-
VBで作った乱数を一度も重複さ...
-
配列の要素数を超えた参照のコ...
-
複数のテキストボックスに同じ...
-
C言語 重複しない4ケタの乱数...
-
javaプログラムについて
-
C#の質問
-
Visual C++ でコントロールを...
-
遅延バインディングを使用でき...
-
Excel VBAで配列の途中から(X)M...
-
排列と配列の漢字の使い分けは
-
For文と配列
-
VBでbyte配列型のインスタンス...
-
C言語で3次元配列の課題をして...
おすすめ情報