1

クイックソート アルゴリズムに関するオンライン リソースに従って、次の関数を再構築しました。

void quickSort(int *array, int arrayLength, int first, int last) {

    int pivot, j, i, temp;
    if (first < last) {
        pivot = first;
        i = first;
        j = last;

        while (i < j) {
            while (array[i] <= array[pivot] && i < last) {
                i++;
            }
            while (array[j] > array[pivot]) {
                j--;
            }
            if (i < j) {
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }

        temp = array[pivot];
        array[pivot] = array[j];
        array[j] = temp;
        quickSort(array, arrayLength, first, j-1);
        quickSort(array, arrayLength, j+1, last);
    }
    printBars(array, arrayLength);
}

それがどのようにその魔法を行うかを見るprintBarsために、配列の内容を次のように出力する手順を書きました

int bars[] = {2, 4, 1, 8, 5, 9, 10, 7, 3, 6};
int barCount = 10;
printBars(bars, barCount);

ここに画像の説明を入力

quickSort前述のアレイで実行した後の最終結果bars[]は、このグラフィックです

quickSort(bars, barCount, 1, 10);

ここに画像の説明を入力

私の質問:

  1. どこに行った10
  2. 値の 1 つとしてa があるのはなぜですか0(元の配列にはありませんでした)。
4

1 に答える 1