#include <stdio.h>

#define N 20

// 快速排序函数
void QuickSort(int a[], int low, int high)
{
    int i, j, pivot, temp;

    if(low >= high)
        return;

    i = low;
    j = high;
    pivot = a[low];

    while(i < j)
    {
        while(i < j && a[j] >= pivot)
            j--;

        while(i < j && a[i] <= pivot)
            i++;

        if(i < j)
        {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }

    a[low] = a[i];
    a[i] = pivot;

    QuickSort(a, low, i - 1);
    QuickSort(a, i + 1, high);
}

int main()
{
    int a[N] = {
        45, 12, 78, 3, 56,
        29, 91, 17, 64, 8,
        33, 70, 1, 52, 86,
        24, 39, 95, 11, 60
    };

    int i;

    printf("排序前的数据：\n");
    for(i = 0; i < N; i++)
        printf("%d ", a[i]);

    // 调用快速排序
    QuickSort(a, 0, N - 1);

    printf("\n\n快速排序后的数据：\n");
    for(i = 0; i < N; i++)
        printf("%d ", a[i]);

    return 0;
}