2016-06-16 3 views
0

ネストループとマージソートを使用してカウント反転アルゴリズムを実装しようとしています。しかし、ネストされたループの実装には、カウントインバージョンC++

のようなエラーメッセージが表示され続けます。ネストされたループアルゴリズムが動作しないことがあります(数回間違って0を返します)。そして、随時、マージソートアルゴリズムがクラッシュし、エラーメッセージ

ダブル無料または破損(アウト)

を持ち、ネストされたループアルゴリズムのように、誤って0を返します。メインはまた、私の意見ではうまく動作しません。..

+0

サイトのガイドラインをお読みください。あなたは問題を引き起こしているコードから最小限の例を抽出することになっています。 –

答えて

2
count_inversions_fast(array, (int)sizeof(array)) << endl; 

あなたはsizeofこの方法を使用して、配列の実行時の大きさを決定することはできません。常にsizeof(int*)(より一般的なサイズはvoid*)です。 32ビットプラットフォームでは4バイト、64ビットプラットフォームでは8バイトになります。常に一定のコンパイル時間を与えます。あなたは以下を使用する必要があります:

count_inversions_fast(array, values.size()) << endl;