快速排序2 随机化

来源:互联网 发布:玄彬韩国地位知乎 编辑:程序博客网 时间:2024/06/05 09:44
#include <iostream>#include <vector>#include <random>#include <algorithm>#include <iterator>using namespace std;default_random_engine e;uniform_int_distribution<unsigned> u(0, 100);int partition(vector<int> &array, int left, int right){int i = left - 1;for (int j = left; j != right; ++j){if (array[j] <= array[right]){swap(array[++i], array[j]);}}swap(array[++i], array[right]);return i;}int random_partition(vector<int> &array, int left, int right){int random = left + u(e) % (right-left+1);swap(array[random], array[right]);return partition(array, left, right);}int random_quick(vector<int> &array, int left, int right){if (left < right){int mid = random_partition(array, left, right);random_quick(array, left, mid - 1);random_quick(array, mid+1, right);}return 0;}int main(){vector<int> demo = {9,8,7,6,5,4,3,2,1,0};random_quick(demo, 0, demo.size()-1);ostream_iterator<int> out_iter(cout, " ");copy(demo.begin(), demo.end(), out_iter);return 0;}

0 0
原创粉丝点击