先j从后往前跑,不满足条件跳出,i开始往后跑,不满足条件跳出,判断i是否小于j,是就交换i,j,不是就说明跑到同一个位置了不交换,此时进入大while不满足条件,跳出大while,交换标志位和i(因为j先减,最后不满足时,肯定i=j相同,且,i,j的值小于等于标志位),然后递归i的左边和i的右边!
void Quick_Sort(int *arr, int begin, int end){
if(begin > end)
return;
int tmp = arr[begin];
int i = begin;
int j = end;
while(i != j){
while(arr[j] >= tmp && j > i)
j–;
while(arr[i] <= tmp && j > i)
i++;
if(j > i){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[begin] = arr[i];
arr[i] = tmp;
Quick_Sort(arr, begin, i-1);
Quick_Sort(arr, i+1, end);
}