#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 11 void QuickSort(int *a, int low, int high); //快排函数 int Patition(int *a, int low, int high); //快排中的划分函数 void Swap(int *pa, int *pb); //交换两个指针指向的值 int a[N] = {50, 33, 56, 7, 45, 1, 56, 77, 100, 23, 8}; int main() { QuickSort(a, 0, N-1); int i; for(i=0; i<N; ++i) printf("a[%d] = %d\n", i, a[i]); return 0; } void QuickSort(int *a, int low, int high) { if(low < high) //长度大于1 { int pivot = Patition(a, low, high); QuickSort(a, low, pivot-1); QuickSort(a, pivot+1, high); } } int Patition(int *a, int low, int high) { int index = low; //用第一个元素做枢轴元素 while(low < high) { while(low<high && a[high]>=a[index]) --high; Swap(a+index, a+high); index = high; while(low<high && a[low]<=a[index]) ++low; Swap(a+index, a+low); index = low; } return index; } void Swap(int *pa, int *pb) { if(pa != pb) { int tmp = *pa; *pa = *pb; *pb = tmp; } }