C++函数实现如下:
void quick_sort(vector<int> &data, int low, int high) {
if (low >= high) {
return;
}
int left = low, right = high;
int key = data[low];
while (left < right) {
while (left < right && key <= data[right]) {
right--;
}
data[left] = data[right];
while (left < right && key >= data[left]) {
left++;
}
data[right] = data[left];
}
data[left] = key;
quick_sort(data, low, left - 1);
quick_sort(data, left + 1, high);
}
完整代码如下(包含main函数,头文件,测试数组):
#include <iostream>
#include <vector>
using namespace std;
void quick_sort(vector<int> &data, int low, int high) {
if (low >= high) {
return;
}
int left = low, right = high;
int key = data[low];
while (left < right) {
while (left < right && key <= data[right]) {
right--;
}
data[left] = data[right];
while (left < right && key >= data[left]) {
left++;
}
data[right] = data[left];
}
data[left] = key;
quick_sort(data, low, left - 1);
quick_sort(data, left + 1, high);
}
void output_array(vector<int> &data) {
for(auto i : data) {
cout << i << " ";
}
cout << endl;
}
int main() {
int _data[] = {2, 4, 6, 0, 9, 8};
vector<int> data(_data, _data + 6);
quick_sort(data, 0, (int)data.size() - 1);
output_array(data);
return 0;
}