对 5,2,7,1,9,4 进行快速排序
排序顺序如下:
思路:
选取数组第一个值k作为对照,只要i<j就进行循环,先选取 i 之后比k小的数,放到 i 的位置,i++,
然后选取 j 之前比 k大的数,放在 j 的位置上 ,j--;
重复这个过程,直到i < j。
代码:
void quickSort(vector<int>&v, int p, int q){
int i=p,j=q;
if(i < j){
int k=v[i];
while(i < j){
while(i<j && v[j] > k){
j--;
}
if(i < j) v[i++] = v[j];
while(i<j && v[i] < k){
i++;
}
if(i < j) v[j--] = v[i];
}
v[i] = k;
for(int i=0;i<v.size();i++){
cout << v[i] <<" ";
}
cout <<endl;
quickSort(v, p, i-1);
quickSort(v, j+1, q);
}
}