快速排序_quick_sort

来源:互联网 发布:周琦数据历史数据 编辑:程序博客网 时间:2024/06/06 08:42
#include <iostream>#include <vector>#include <conio.h>using namespace std;/*交换两个数*/void exchange(int &x, int &y){int temp = x;x = y;y = temp;}/*将数组data中的[left, right]中的数据以data[right]为界划分为左右两部分*/int partion(vector<int> &data, int left, int right){//current用来标识第一个大于data[right]的数据位置int current = left;//循环data中的数据,若小于data[right],则交换到左边for (int i = left; i < right; i++){if (data[i] < data[right]){exchange(data[i], data[current]);current++;}}//最后,将data[current]交换到分界点exchange(data[right], data[current]);return current;}/*快速排序算法*/void quick_sort(vector<int> &data, int left, int right){if (left < right){int middle = partion(data, left, right);quick_sort(data, left, middle - 1);quick_sort(data, middle + 1, right);}}int main(){vector<int> data;int temp = 0;while(cin >> temp){data.push_back(temp);}/*int current = partion(data, 0, data.size() - 1);cout << current << endl;*/quick_sort(data, 0, data.size() - 1);for (vector<int>::iterator iter = data.begin(); iter != data.end(); iter++){cout << *iter;cout << " ";}getch();return 0;}

0 0
原创粉丝点击