void disp(int a[], int n); void QuickSort(int a[], int s, int t); int Partition(int a[], int s, int t); int main(){ int n=10; int a[] = {2,5,1,7,10,6,9,4,3,8}; printf("排序前:\n"); disp(a,n); QuickSort(a,0,n-1); printf("排序后:\n"); disp(a,n); } void QuickSort(int a[], int s, int t) { if(s<t){ int i=Partition(a,s,t); QuickSort(a,s,i-1); QuickSort(a,i+1,t); } } int Partition(int a[], int s, int t) { int i=s,j=t; int temp=a[s]; while (i!=j){ while (j>i&&a[j]>=temp) j--; a[i]=a[j]; while(i<j&&a[i]<=temp) i++; a[j]=a[i]; } a[i]=temp; return i; } void disp(int a[], int n) { for(int i=0;i<n;i++) printf("%d\t",a[i]); printf("\n"); }
递归法实现快速排序(C/C++)
最新推荐文章于 2023-01-07 14:34:08 发布