implementation by C++
#include <vector>
using namespace std;
void qsort(vector<int>::iterator start, vector<int>::iterator end) {
if(start == end) return;
auto pivot = *start;
auto left = start, right = end - 1;
while(left < right) {
while(left < right && *right >= pivot) {
right--;
}
if(left < right)
*left = *right;
while(left < right && *left <= pivot) {
left++;
}
if(left < right)
*right = *left;
}
*left = pivot;
qsort(start, left);
qsort(left+1, end);
}
int main() {
vector<int> test = {2,4,1,3,5,2,4,-1,6,0};
qsort(test.begin(), test.end());
for(auto elem : test)
cout << elem << " ";
return 0;
}
代码执行结果如下所示