宿題のカウントインバージョンアルゴリズムを実装する必要がありますが、私のコードで何が問題であるか把握できませんでした。私は(唯一の私は<iostream>
が含まれており、出力のみのためのSTDを使用することができます任意のC++ライブラリを使用せずに)ずっとそれでcout<<
を動作しませんでした)、それはそれだ、また、彼はここに私たちにこの作品を与えた:C++でマージソートアルゴリズムを使用してカウント反転を実装する
void count_inversion(int a[],int n){
count_inversion(a, n/2);
count_inversion(a + (n/2), n/2);
count_inversion_merge(a, n/2, n);
}
を、私たちを言いましたcount_inversion_merge
関数を実装し、この部分をヒントとして使用する必要があります。 私は少しコードを適応させようとしましたが、まだ運がありません。ここで
は私のコードです:
int count_inversion_merge(int array[], int mid, int n) {
for (k = 0; k < n; k++) {
if (j == n || (i < mid && array[i] < array[j])) {
b[k] = array[i];
i++;
} else {
b[k] = array[j];
j++;
inversion++;
}
}
}
私の最初の入力int a[] ={ 2, 4, 1, 3, 5 };
は3を返す必要がありますが、それは5 を返し、私の第二の出力は5であるべきと私は私がどこにあるか、誰かが指摘することができることを願っています。5.を取得しますエラー。
デバッガとのラインで、あなたのコード行をステップ実行するとき、あなたは何を観察しましたか? – user0042
私は配列のインデックスの値のために奇妙な出力を得て、毎回elseパートにジャンプします。 –
小さな入力例では、手作業でアルゴリズムを実行できるはずです(そうでない場合は、問題を解決する前にアルゴリズムを理解しておく必要があります)。 – MrSmith42