#include <cstdio>
#include <iostream>
#include <algorithm> //using random_shuffle
#include <vector>
using namespace std;
int partition(vector<int>& vec, int l, int r){
int povit = vec[l];
auto j = l;
for(auto tail = l+1; tail <= r; ++tail){
if(vec[tail] <= povit){
swap(vec[tail], vec[++j]);
}
}
swap(vec[l], vec[j]);
return j;
}
void QSort(vector<int> &vec, int l, int r){
int m = partition(vec, l ,r);
cout <<"m = "<< m <<endl;
if(l < m-1){
QSort(vec, l, m-1);
}
if(m+1 < r){
QSort(vec, m+1, r);
}
}
int main(){
vector<int> vec;
int tmp;
while(cin >> tmp){
vec.push_back(tmp);
}
random_shuffle(vec.begin(), vec.end());
int r = vec.size()-1;
QSort(vec, 0, r);
for(auto i = 0; i < vec.size(); ++i){
cout << vec[i] <<" ";
}
cout << endl;
return 0;
}
quicksort my impletation
最新推荐文章于 2022-10-07 18:22:38 发布