小さな配列をソートするプログラムに取り組んでいます。これはクラスの課題であり、選択の並べ替えが必要でしたが、要求されたよりも少し先に進みたいと思いました。以前に選択ソートを行ったことがあり、双方向バージョンを実装したいと考えていました。1つの問題を除いて、機能します。私の 2 番目の結果は常に 2 番目の結果であり、決して並べ替えられません。小さくてばかげた何かが欠けているような気がします。
これが私の検索機能のコードです
void biSelSort(string engine[], double hits[]) {
int k = ARRAY_SIZE - 1;
for (int i = 0; i < k; i++) {
int min = i;
int max = i;
for (int j = i + 1; j <= k; j++) {
if (hits[j] < hits[min]) {
min = j;
}
if (hits[j] > hits[max]) {
max = j;
}
}
string tS = engine[min];
double tD = hits[min];
engine[min] = engine[i];
hits[min] = hits[i];
engine[i] = tS;
hits[i] = tD;
if (max == i) {
tS = engine[min];
tD = hits[min];
engine[min] = engine[k];
hits[min] = hits[k];
engine[k] = tS;
hits[k] = tD;
} else {
tS = engine[max];
tD = hits[max];
engine[max] = engine[k];
hits[max] = hits[k];
engine[k] = tS;
hits[k] = tD;
}
i++;
k--;
}
}