1 // 快速排序.cpp 2 3 #include "stdafx.h" 4 5 int partition(int a[],int p,int r) 6 { 7 int x,i,j,tmp; 8 x=a[r]; 9 i=p-1; 10 for(j=p;j<=r-1;j++) 11 { 12 if(a[j]<=x) 13 { 14 i++; 15 tmp=a[i];//交换a[j]和a[i] 16 a[i]=a[j]; 17 a[j]=tmp; 18 } 19 } 20 int temp; 21 temp=a[i+1]; //交换a[i+1]和a[r] 22 a[i+1]=a[r]; 23 a[r]=temp; 24 return i+1; 25 } 26 27 void quicksort(int a[],int p,int r) 28 { 29 int q; 30 if(p<r) 31 { 32 q=partition(a,p,r); 33 quicksort(a,p,q-1); 34 quicksort(a,q+1,r); 35 } 36 } 37 void main() 38 { 39 int arr[]={2,8,7,1,3,5,6,4}; 40 int len; 41 len=sizeof(arr)/sizeof(arr[0]); 42 for(int i=0;i<len;i++) 43 { 44 printf("%2d",arr[i]); 45 } 46 printf("\n"); 47 quicksort(arr,0,len-1); 48 for(int i=0;i<len;i++) 49 { 50 printf("%2d",arr[i]); 51 } 52 }