快排排完是什么样
运行下面这段程序:
#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>
using namespace std;
string join(const vector<int>& v) {
string s;
for (size_t i = 0; i < v.size(); i++) s += (i ? "/" : "") + to_string(v[i]);
return s;
}
vector<int> quick(const vector<int>& a) {
if (a.size() <= 1) return a;
int pivot = a.back();
vector<int> less, more;
for (size_t k = 0; k + 1 < a.size(); k++) {
if (a[k] < pivot) less.push_back(a[k]);
else more.push_back(a[k]);
}
vector<int> out = quick(less);
out.push_back(pivot);
vector<int> r = quick(more);
out.insert(out.end(), r.begin(), r.end());
return out;
}
int main() {
cout << join(quick({17, 24, 15, 13, 23})) << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)