pascal随机化快排 randomize的问题

写不写randomize?在快排过程里写还是主程序里写比如主程序beginxxxxxxx;randomize;qsort(1.10);end;还是过程procedureq... 写不写 randomize? 在快排过程里写还是主程序里写
比如
主程序
begin
xxxxxxx;
randomize;
qsort(1.10);
end;

还是过程
procedure qsort(l,r:integer);
var m,n,p,q:integer;
begin
randomize;
m:=l;
n:=r;
p:=a[random(r-l+1)+l];
repeat
while a[m]<p do inc(m);
while a[n]>p do dec(n);
if m<=n then begin
q:=a[m];
a[m]:=a[n];
a[n]:=q;
inc(m);
dec(n);
end;
until m>n;
if m<r then qsort(m,r);
if n>l then qsort(l,n);
end;

另外 p:=a[random(r-l+1)+l];写的对不对
展开
 我来答
我最爱诸葛亮
2012-12-01 · TA获得超过138个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:117万
展开全部
好吧,关于这个问题,高中搞OI的时候,有一次做一套NOIP模拟题,就要用到快排,但是数据有点大,普通的会超时一点点,那么怎么优化呢?老师说加个RANDOMIZE就行了,后来又一次,还是快排,还是超一点点挂,为什么呢?因为有的同学写到过程里了。RANDOMIZE其实就是个随机种子生成,所以在主程序里加一个就可以了,在过程里加,调用太多了,会有细微影响。然后最好还是加一个,不然的话生成的随机数其实不能算真正的随机数,好像是跟系统时间有关系。好久没碰过这些了,有不对的欢迎指正
yjw40
2012-12-01 · TA获得超过599个赞
知道小有建树答主
回答量:513
采纳率:100%
帮助的人:219万
展开全部
在主程序里用就可以了,randomize只是说明random函数可以用了由于快排是递归算法,用多了其实是会对程序效率造成影响,至于其他错误,我不得而知
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蚊子死神
2012-12-01 · 超过34用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:78.1万
展开全部
都可以 不过一般都在主程序里面使用 我没有在过程中使用过

最后一句话是对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式