#include <stdio.h> #include <stdlib.h> void swap(int & a,int & b) { int temp=a; a=b; b=temp; } int QuickSort_Partition(int A[],int p, int r) { //随机选值 int s_max=rand()%(r-p+1)+p;//随机数生产后要加上p swap(A[s_max],A[r]);//随机数生成后注意交换 int max=A[r]; int i=p-1; int j=p; while(j<r) { if(A[j]<=max) { swap(A[j],A[++i]); } j++; } swap(A[r],A[++i]);//注意交换 return i; } void QuickSort(int A[],int p, int r) { if(p>=r) return; int q=QuickSort_Partition(A,p,r); QuickSort(A,p,q-1); QuickSort(A,q+1,r); } int main() { int A[]={5,4,7,6,3,8,11,98,44,33}; QuickSort(A,0,9); printf("\n"); for(int i=0;i<=9;i++) printf("%d\t",A[i]); printf("\n"); }
需要几个地方注意,已经写在上面了,