私は配列の引数をsource.cppから取って別のヘッダーファイルに選択ソート関数を持っています これは、配列をソートする必要がありますが、私はスワップ機能を使用してdoens'tを使用します。一方ソートアルゴリズムのスワップ機能は、ソート機能のパラメータでは機能しません。
class selection
{
public:
void selectionSort(int a[],int b[], int n);
void swap(int a, int b);
};
void selection::selectionSort(int a[], int b[], int n)
{
for (int i = 0; i < n - 1; i++)
{
int iMin = i;
for (int j = i + 1; j < n; j++)
{
if (a[j] < a[iMin])
iMin = j;
}
swap(a[i], a[iMin]);
swap(b[i], b[iMin]);
}
for (int i = 0; i < n; i++)
{
cout << a[i] << ' ';
cout << b[i] << endl;
}
cout << endl;
}
void selection::swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
、iは関数を使用してはいけないし、単に(このコードのスワップを置き換える)、このようなループ内スワップを書き込む
int temp = a[i];
a[i] = a[iMin];
a[iMin] = temp;
int temp2 = b[i]
b[i] = b[iMin];
b[iMin] = temp2;
それが完璧に動作します。
追加情報は、[]とb []として渡される2つの配列メンバーを持つsource.cppの構造体を持っていることです.nはソートされるデータの数だけです。
あなたの 'swap'関数は何もしません。あなたの問題は次のように減らすことができます: 'void f(int x){x = 42; } int main(){int a = 0; f(a); cout << a << "\ n"; } ' – melpomene
参照を使用するためにスワップを変更する:void swap(int&a、int &b); – rcgldr