free pascal 中能调用快速排序吗

 我来答
百度网友dcfe3e4f2
2010-10-18 · TA获得超过453个赞
知道答主
回答量:109
采纳率:0%
帮助的人:101万
展开全部
【当然可以】

不过如果数据量大的话,会导致系统堆栈溢出。

所以建议使用随机化快排,方法如下:

在主程序中初始化随机数产生器(Randomize);

在Q_Sort(l,r:longint)中,修改:

procedure Q_Sort(l,r:longint);
var i,j,x:longint;
begin
i:=l;j:=r;
x:=a[random(j-i+1)+i];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
swap(a[i],a[j]);
inc(i);dec(j);
end;
until i>j;
if i<r then q_sort(i,r);
if j>l then q_sort(l,j);
end;

这样子避免了普通快排最坏情况的出现(O(n^2)),99%以上的几率可以是最优的情况(O(nlogn))吧..

参考资料: 【贪心策略】

sun_de_qi
2010-10-20 · TA获得超过103个赞
知道答主
回答量:87
采纳率:0%
帮助的人:76.3万
展开全部
你可以直接将pascal安装目录下的快排样例粘贴过来
应该不可以直接调用的
快排的样程目录:
fpc->demo->text->qsort.pp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oibltx
2010-10-18 · 超过12用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:40.5万
展开全部
能自己写然后调用,不能像C或是C++一样用库函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
auroralinan
2010-10-19 · 超过15用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:44.3万
展开全部
要自己写好关于快排的代码,在程序里面调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烨然炊烟
2010-10-20 · TA获得超过303个赞
知道答主
回答量:35
采纳率:0%
帮助的人:31万
展开全部
安装时带有快排标程,但不能调用,只能复制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闲望晗01
2010-10-18 · TA获得超过271个赞
知道答主
回答量:72
采纳率:0%
帮助的人:59.8万
展开全部
能啊!需要自定义排序函数,然后直接调用函数就行了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式