您的位置:首页 > 编程语言 > C语言/C++

C++ 快速排序实现

2016-04-07 14:08 369 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 c++ 排序