#ifndef _algorithm_
#define _algorithm_
namespace Sorting{
int *bubble(int *dataPass, int dataSize);
}
#endif
algo.h algo.cppのうち1を生成
#include "algorithm.h"
int *Sorting::bubble(int *dataPass, int dataSize){
for(int i = 0; i < dataSize; i++){
for(int j = 0; j < dataSize; j++){
cout<<dataPass[j+1]<<" < "<<dataPass[j]<<endl;
if(dataPass[j+1] < dataPass[j]){
int tmp = dataPass[j];
dataPass[j] = dataPass[j+1];
dataPass[j+1] = tmp;
}
}
}
return dataPass;
}
私はソートライブラリを作りたいと私はバブルソートで始まります明らかに私は問題に直面している。この関数はなかった返される配列1,2,3,5,7を実行した後、例えば、私は、属性dataPass 配列[5] = {7,2,5,8,3}とDATASIZE 5を与え私は間違っている?配列には1はありませんが、ソートされたものは1と表示され、8がインデックス5にプッシュされていることがわかりましたので、配列が6になったので、何が起こったのか分かりません。
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
配列の索引付けにはさらに注意してください。 – molbdnilo
ほんの少しのヒント: 'j = dataSize - 1'なら、配列インデックス' j + 1'のどの要素を指すのでしょうか? –