#include " stdafx.h " #include < iostream > int Partition( int A[], int p, int r) ... { int x = A[r];//选择x=A[r]作为主元 int i = p -1; for(int j = p; j <= r-1; j++) if(A[j] <= x)//假设A[i]大于x,那么就不用移动了。第二个语句swap()将x移动到最左方,所以比x大的数都在右方。 ...{ //假设A[j]小于x,因为A[i]的下标i始终小于等于j,那么说明A[i]是大于x的值,否则便是被移动了。 i = i+1;//这样第一个函数swap()将把大于x的A[i]与小于x的A[j]互相交换位置。 std::swap(A[i], A[j]); } std::swap(A[i+1], A[r]); return i+1;} void Quick_Sort( int A[], int p , int r) ... { if(p < r) ...{ int q = Partition(A, p, r); Quick_Sort(A, p, q-1); Quick_Sort(A, q, r); }} int main( int argc, char * argv[]) ... { int C[12] = ...{100,4,8,7,6,32,5,4,8,1,2,1}; Quick_Sort(C, 0, 11); for(int i = 0; i <= 11; i++) std::cout<<C[i]<<" "; return 0;}