#include <stdio.h> #include <stdlib.h> void exchange(int *a,int *b){ int tmp; tmp=*b; *b=*a; *a=tmp; } int partition(int* array,int s,int e){ int x=*(array+e);//最后的值 int i=s-1;//较慢 int j=0;//快 for(j=s;j<e;j++){ if(*(array+j)<x){ i=i+1;//i前进 exchange(&array[i],&array[j]); } } exchange(&array[e],&array[i+1]); return i+1; } void quicksort(int* array,int s,int e){ if(s<e){ int q=partition(array,s,e); quicksort(array,s,q-1); quicksort(array,q+1,e); } } void print(int* array,int len){ int i=0; for(i=0;i<len;i++){ printf("%d/t",*(array+i)); } printf("/n"); } int main(){ int array[]={4,3,5,7,2,5,4,1}; quicksort(array,0,sizeof(array)/sizeof(*array)-1); print(array,sizeof(array)/sizeof(*array)); }