算导 快速选择第i小元素
来源:互联网 发布:卖淘宝号属于犯法吗 编辑:程序博客网 时间:2024/05/21 22:55
#include <iostream>#include <vector>#include <random>using namespace std;default_random_engine e;uniform_int_distribution<unsigned> u(0, 9);int partition(vector<int> &A, int p, int r){int i = p - 1;for (int j = p; j < r; ++j){if (A[j] <= A[r]){swap(A[++i], A[j]);}}swap(A[i+1], A[r]);return i+1;}int random_partition(vector<int> &A, int p, int r){int random = p + u(e) % (r - p + 1);swap(A[random], A[r]);return partition(A, p, r);}int random_select(vector<int> &A, int p, int r, int i){if (p == r){return A[p];}int q = random_partition(A, p , r);int k = q - p + 1;if (i == k){return A[q];}else if (i < k){return random_select(A, p, q-1, i);}else{return random_select(A, q+1, r, i-k);}return 0;}int main(){vector<int> A = {9,8,7,6,5,4,3,2,1,0};cout << "第一个小的元素为 : ";cout << random_select(A, 0, 9, 1) << endl;return 0;}
0 0
- 算导 快速选择第i小元素
- 选择第i小的元素
- 随机选择第i小元素
- 第i小元素
- 随机选择(求中位数,第i 小的元素)
- 算法导论CLRS 9.2 选择第i小的元素
- 分治法之线性选择第i小元素
- 算法实践篇-基于快速排序原理的选择第i小元选择算法
- 以期望线性时间选择第i小的元素(9.2)
- 分治法解决选择问题——找出第i小的元素
- 算法导论-顺序统计-快速求第i小的元素
- 算法:快速排序以及第k小元素的线性选择算法
- 快速排序(3)的应用:选择--用于选出第K小的元素
- 算法:快速排序以及第k小元素的线性选择算法
- 求第i小的元素
- 【算法导论】第i小的元素
- 查找第i小的元素
- 求第i小的元素
- A003:Python 函数的参数形式
- Country命令 使 MS-DOS 子系统能使用国际时间、日期、货币、大小写转换和小数分隔符
- KVC & KVO 理解
- sencha touch 加载数据等待图标
- 项目终于要完结了,我也快要兑现我的当初的承诺了
- 算导 快速选择第i小元素
- Mac 终端之iterm2 初使用
- 2014暑假第一天解题总结
- 中断处理
- HTML特殊字符大全
- C语言程序编译的内存分配:
- 代码页即地狱
- JAVA的WebService支持
- display:inline-block