私が作成したソート方法について少しアドバイスをいただければ幸いです。
このコードの目的は、int ポインター配列を作成し、その配列内のポインターを通常の int 配列の内容でソートすることです。次に、元の int 配列の場所に基づいて別の変数に値を割り当てます。
このコードで私が経験している奇妙な点は、私が知る限り何の影響も与えないはずのテスト コードが、実際にはポインターの内容に影響を与えていることです。おそらく値は変わっていませんが、テスト コードの書き方が原因でエラーが発生しています。
//create array
int c[8] = {3,1,5,7,8,2,6,4};
//create pointer array
int *newptr[8];
for(int k = 0; k<8; k++)
{
newptr[k] = &c[k];
}
//sort pointer array
for(int j = 0; j<8; j++)
{
for(; j > -1 && *newptr[j] < *newptr[j+1]; j--)
{
int *temp = newptr[j+1];
newptr[j+1] = newptr[j];
newptr[j] = temp;
}
}
//set lookuplocation
int lookuplocation;
for(int i = 0; i<8; i++)
{
cout << *newptr[i];
if(newptr[i] == &c[0])
{
cout << *newptr[i] << endl;
//If I use endl or \n to test the pointers values I end up with only
//a part of the correct data.
cout << "\nSuccess!\n";
lookuplocation = 0;
}
}
//Also for my last test sometimes the first element gets messed up as well
//test arrays
for(int k = 0; k<8; k++)
{
cout << "Element " << k << ": " << *newptr[k] << endl;
cout << "Element " << k << ": " << newptr[k] << endl;
}