zoukankan      html  css  js  c++  java
  • Randomized_QuickSort C++

    算法导论(第三版)中文 P102

     

     //RANDOMIZED_QUICKSORT.h文件

    1 #pragma once 2 #include"QUICKSORT.h" 3 #include<iostream> 4 #include<random> 5 int Randomized_partition(std::vector<int>& A, const int& p, const int& r) 6 { 7 std::default_random_engine e; //引擎:生成随机无符号数 8 std::uniform_int_distribution<unsigned> u(p, r);// 范围内的随机数 9 int i = u(e); 10 std::swap(A[r], A[i]); //是随机数是主元 11 return Partition(A, p, r); 12 } 13 14 void Randomized_QuickSort(std::vector<int> &A, const int& p, const int& r) 15 { 16 if (p < r) 17 { 18 int q = Randomized_partition(A, p, r); 19 Randomized_QuickSort(A, p, q-1); 20 Randomized_QuickSort(A, q + 1, r); 21 } 22 }

    main.cpp

     1 #include"QUICKSORT.h"
     2 #include"RANDOMIZED_QUICKSORT.h"
     3 #include<iterator> //ostream_iterator
     4 void QuickSort()
     5 {
     6     vector<int> v = { 0,2,8,7,1,3,5,6 };//0 占位置 是 i = p-1;
     7     cout << "A is" << endl;
     8     std::ostream_iterator<int> out_iter(cout, " ");
     9     copy(v.begin() + 1, v.end(), out_iter);
    10     cout << endl;
    11     Randomized_QuickSort(v, 1, v.size()-1);
    12     cout << " sorted A " << endl;
    13     copy(v.begin() + 1, v.end(), out_iter);
    14 }
    15 int main()
    16 {
    17     QuickSort();
    18 }

     

  • 相关阅读:
    洛谷 U141580 简化罗波切问题
    洛谷 U141578 维修电路
    洛谷 U140760 狭义公因子
    CF75C Modified GCD
    算法题-求解斐波那切数列的第N个数是几?
    算法题-求N的阶乘
    JAVA8新特性
    nginx启动脚本,手动编辑
    javah生成带有包名的头文件
    Matlab图像处理(03)-基本概念
  • 原文地址:https://www.cnblogs.com/Z-s-c11/p/13832039.html
Copyright © 2011-2022 走看看