C言語でクイックソート

Cだといちいちめんどくさい。

#include <stdio.h>

void quicksort(int array[], int left, int right) {
    int l = left;
    int r = right;
    int pivot = array[(left + right) / 2]; // 中央からピボットを選択
    int buf;

    while (1) {
        while (array[l] < pivot) l++;
        while (array[r] > pivot) r--;

        if (l > r) break;

        // pivotより小さい値を左、大きい値を右に入れ替え
        buf = array[l];
        array[l] = array[r];
        array[r] = buf;

        l++, r--;
    };

    // pivotより小さい領域と大きい領域をそれぞれ再帰的にソート
    if (left < r)  quicksort(array, left, r);
    if (l < right) quicksort(array, l, right);
}

int main(int argc, char *argv[]) {
    int i;
    int array[] = {
        6, 4, 3, 7, 8, 0, 5, 2, 9, 1,
    };
    int count = sizeof array / sizeof array[0];

    quicksort(array, 0, count - 1); // ソート

    // 結果表示
    for (i = 0; i < count; i++) {
        printf("%d\n", array[i]);
    }

    return 0;
}