编辑代码

#include <stdio.h>

void dis(int arr[], int len){
    int i = 0;    
    for(; i < len; i++){
        printf("%d ", arr[i]);
    }
    printf("\n");
}

void swap(int* a, int* b)
{
    int temp = *b;
    *b = *a;
    *a = temp;
}

int pivot(int arr[], int low, int high){
    int p = arr[high];
    int i=low, j;

    // 从low开始,每个都和基准p比较
    // 如果小于p,就换到前面,同时位置后移
    for(j = low; j < high; j++){
        if(arr[j] < p){
            swap(&arr[j], &arr[i]);
            i ++;
        }
    }
    swap(&arr[high], &arr[i]);
    return i;
}

// 递归划分
void sort(int arr[], int low, int high){
    if(low < high){
        int mid = pivot(arr, low ,high);
        sort(arr, low, mid - 1);
        sort(arr, mid + 1, high);
    }
}

// 入口
void quickSort(int arr[], int len){
    sort(arr, 0, len - 1);
}
int main () {
    int arr[] = {9,5,2,7,12,4,3,1,11};
    int len = 9;
    dis(arr, len);
    quickSort(arr, len);
    dis(arr, len);
    return 0;
}