2011-03-03 CLRS Chapter 5 Randomized Algorithms 随机化的算法
来源:互联网 发布:数据流量控制 编辑:程序博客网 时间:2024/05/22 10:57
这章讲随机化的思想在算法里面的运用,讲理论的内容要多一点,核心的算法就俩,而且做的还是同一件事:将一个数组里面的数据进行一次随机排列。
讲了两种方法,一种是产生一个随机数组(里面的每一个值都是0~len*len*len之间的一个随机数),然后将此数组作为key,对原来的数组进行一次“排序”,排序之后,就得到原来数组的一个随机排列。Java代码如下:
这种方法真正的cost在于sort(data, p)部分的cost
第二种方法就巧妙多了,效率也高多了,可以在原地、O(n)时间内完成。它的思想是:
对于每一个 i from 0 to len-1,将data[i]与在{data[i]、data[i+1]、…、data[len-1]}当中随机取一个值进行交换。这样一次循环下来,data数组就完成了一次随机排列。稍微想想,就会发现这个思想还真是正确的,当然,书上进行了严谨的数学证明。
Java代码如下:
除了这两个算法,书上还提到一个Hiring Problem,这个问题还是比较有趣的。另外还有一个概念: uniform random permutation: every permutation of the numbers 1 through n is equally likely to be produced.
- 2011-03-03 CLRS Chapter 5 Randomized Algorithms 随机化的算法
- 2011-02-25 CLRS Chapter22 Elementary Graph Algorithms 图的几个基础算法
- CLRS 7.3快速排序的随机化版本
- 算法导论Introduction to Algorithms(CLRS)
- Solution to CLRS Chapter 5
- 随机化算法1-5
- CLRS (Introduction to Algorithms 2nd) reading notes 5
- 2011-03-02 CLRS Chapter2 Getting Started
- 快速排序的随机化算法
- 快速排序的随机化算法
- 快排的随机化算法
- Algorithm 3: Probabilistic Analysis and Randomized Algorithms
- CLRS 1.2作为一种技术的算法
- CLRS 4.2矩阵乘法的Strasson算法
- CLRS 8.1排序算法的下界
- CLRS 16.2贪心算法的原理
- Solution to CLRS Chapter 2
- Solution to CLRS Chapter 3
- libc、glibc与gcc
- bool类型的成员变量
- 2011-03-02 CLRS Chapter2 Getting Started
- 作为一个真正合格的程序员的素质
- 下一站,我们的天空
- 2011-03-03 CLRS Chapter 5 Randomized Algorithms 随机化的算法
- VC2010中"Include Directories" 和 "Additional Include Directories"的区别
- 微笑其实很简单
- 自定义flex图表toptip的提示
- LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
- 2011-03-04 CLRS Chapter6 Heapsort 堆排序 优先队列
- android 进行多文件压缩处理格式zip
- 位图加载-打散以及一个拼图游戏
- 累了,路还能走多远