int PARTITION(int a[],int p,int r) { //i指向小于x的最后一个值的下标 //j指向当前正在进行比较的元素下标 int temp; int i=p-1; int x=a[r]; for (int j=p;j<r;++j) { if (a[j]<=x) { ++i; temp=a[i]; a[i]=a[j]; a[j]=temp; } } //for循环结束后,此时i+1就是x该插入的位置,之前的值都小于x,之后的都大于x temp=a[i+1]; a[i+1]=a[r]; a[r]=temp; return i+1; } void QUICKSORT(int a[],int p,int r) { if (p<r) { int q=PARTITION(a,p,r); QUICKSORT(a,p,q-1); QUICKSORT(a,q+1,r); } }<textarea>