0

小さな配列をソートするプログラムに取り組んでいます。これはクラスの課題であり、選択の並べ替えが必要でしたが、要求されたよりも少し先に進みたいと思いました。以前に選択ソートを行ったことがあり、双方向バージョンを実装したいと考えていました。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--;
    }
}
4

1 に答える 1

4

forステートメントで1回、ループの最後で1回、iを2回インクリメントするつもりですか?そうした場合は、コードを変更して、1 か所だけで実行するようにする必要があります。

于 2013-01-16T23:17:39.790 に答える