摘要: 选择问题——在序列中按顺序找到某个元素。这可以用排序方法做到,即先排个序,在找到指定元素,但是这样就按最快的堆排序、合并排序啥的都得是O(nlgn)数量级的,这里采取的方法可以在期望为O(n)的时间内完成。具体的做法如同快速排序,因为快速排序最好情况时间也为O(nlogn),但是在实际情况下,遇到的代拍序列并不是最好的。因此,一种改进的方式是快速排序的随机化版本。利用随机化方式应用到该选择问题中,可以是程序期望在在线性时间内完成。具体的实现方式如下:int Select(int *A, int begin, int end, int i){ if(begin == end)... 阅读全文
posted @ 2013-03-05 23:49 jihite 阅读(3340) 评论(0) 推荐(0) 编辑
摘要: C/C++产生随机数用到两个函数rand() 和 srand()一. 不指定范围产生随机数 用到函数rand(),函数原型为int rand(),无参数。此时会产生一个介于0~RAND_MAX间的整数。RAND_MAX的大小可以查看,在include文件夹(linux在usr目录、windows在安装目录)的stdlib.h可以看到,linux下其值为2147483647(),其值与具体系统有关。参考代码:#include#includeint main(){ int i; for(i=0; i#include#define Random(x) (rand() %... 阅读全文
posted @ 2013-03-05 21:38 jihite 阅读(76596) 评论(5) 推荐(6) 编辑