参考代码
#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;
}