快速排序
用vector存数据
#include <bits/stdc++.h>
using namespace std;
int oneSort(vector<int> &data,int i,int j){
int pivotkey=data[i];
while(i<j){
while(i<j&&data[j]>pivotkey)//这里要再判断一遍i<j防止一路减下去到头
j--;
data[i]=data[j];
while(i<j&&data[i]<pivotkey)
i++;
data[j]=data[i];
}
data[i]=pivotkey;
return i;
}
void quickSort(vector<int> &data,int i,int j){
if(i<j){//注意这里不是while
int pivotloc=oneSort(data,i,j);//确定切分点位置
quickSort(data,i,pivotloc-1);
quickSort(data,pivotloc+1,j);
}
}
int main(){
vector<int> data;
data.push_back(5);
data.push_back(4);
data.push_back(7);
data.push_back(9);
data.push_back(1);
data.push_back(3);
data.push_back(2);
quickSort(data,0,6);
for(int i=0;i<data.size();i++)
printf("%d\t",data[i]);
return 0;
}