pascal快速排序

讲解一下快速排序的标程,基本算法已知... 讲解一下快速排序的标程,基本算法已知 展开
 我来答
餾纞伱の微笑
推荐于2017-11-26 · TA获得超过332个赞
知道答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
这个快排吧是这样的
我用我的程序给你讲啊
proceduer kp(l,r:integer);
var c,d,e,f:integer;
begin
c:=l;d:=r;e:=a[(l+r) div 2];
repeat
while a[c]<e do inc(c);
while a[d]>e do dec(d);
if c<=d then begin
f:=a[c];a[c]:=a[d];a[d]:=f;
inc(c);
dec(d);
end;
until c>d;
if c<r then kp(c,r);
if l<d then kp(l,d);
end;

c,d是两个指针,分别是头和尾,这个快排程序是把a数组从小到大排列,首先先看c指针,c指针起始时是在开头的,把c所指的位置的数与数组中间那个数(即程序中的e)比较,如果比e小,则c+1,直到c所指的数比e大,c指针停下,开始d指针,一样的,看d指针所指的数是否比e大,如果比e大,则d-1,直到d所指的数比e小,d指针停下,然后把c、d指针所指的数交换,如果c<=d,则继续刚才的步骤,如果c>d了,那么递归调用,if c<r then kp(c,r);if l<d then kp(l,d);
调用的内容和刚才讲的一样
明白没?
Zzzzz____
2008-10-01 · TA获得超过295个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:190万
展开全部
procedure quicksort(l,r:longint);
var
__x,i,j,t :longint;
begin
__x:=a[random(r-l+1)+l];
__i:=l;j:=r;

__repeat
____while a[i]<x do inc(i);
____while a[j]>x do dec(j);
____if i<=j then
______begin
________t:=a[i]; a[i]:=a[j]; a[j]:=t;
________inc(i);dec(j);
______end
__until i>j;

__if l<j then quicksort(l,j);
__if i<r then quicksort(i,r);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尾文柏钟飒
2019-02-27 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:643万
展开全部
这个是从小到大的,因为这两句
while
x[i]<k
do
inc(i);
while
x[j]>k
do
dec(j);
只要将他们换下大小就行了
while
x[i]>k
do
inc(i);
while
x[j]<k
do
dec(j);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4abab787d
2018-07-11 · 超过24用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:41.7万
引用餾纞伱の微笑的回答:
这个快排吧是这样的
我用我的程序给你讲啊
proceduer kp(l,r:integer);
var c,d,e,f:integer;
begin
c:=l;d:=r;e:=a[(l+r) div 2];
repeat
while a[c]<e do inc(c);
while a[d]>e do dec(d);
if c<=d then begin
f:=a[c];a[c]:=a[d];a[d]:=f;
inc(c);
dec(d);
end;
until c>d;
if c<r then kp(c,r);
if l<d then kp(l,d);
end;

c,d是两个指针,分别是头和尾,这个快排程序是把a数组从小到大排列,首先先看c指针,c指针起始时是在开头的,把c所指的位置的数与数组中间那个数(即程序中的e)比较,如果比e小,则c+1,直到c所指的数比e大,c指针停下,开始d指针,一样的,看d指针所指的数是否比e大,如果比e大,则d-1,直到d所指的数比e小,d指针停下,然后把c、d指针所指的数交换,如果c<=d,则继续刚才的步骤,如果c>d了,那么递归调用,if c<r then kp(c,r);if l<d then kp(l,d);
调用的内容和刚才讲的一样
明白没?
展开全部
proceduer应该是re吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式