C++ 快速排序实现

来源:互联网 发布:网络视频电话机 编辑:程序博客网 时间:2024/06/08 04:05

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;}
0 0