pascal的快速排序,堆排序的例子(或源代码)

 我来答
百度网友de78100
2011-11-09 · TA获得超过2673个赞
知道答主
回答量:126
采纳率:0%
帮助的人:84.6万
展开全部
快排
procedure qsort ( l , r : longint );
var
i , j , m , t : longint;
begin
i := l;
j := r;
m := ans [ ( i + j ) div 2 ];
repeat
while ans [ i ] < m do inc ( i );
while ans [ j ] >备纤饥 m do dec ( j );
if i <= j then
begin
t := ans [ i ];
ans [ i ] := ans [ j ];
ans [ j ] := t;
inc ( i );
dec ( j );
end;
until i > j;
if l < j then qsort ( l , j );
if i < r then qsort ( i , r );
end;
堆排:
program duipx;
const n=8;
type arr=array[1..n] of integer;
var a:arr;i:integer;
procedure sift(var a:arr;l,m:integer);
var i,j, t:integer;
begin
i:=l;j:=2*i;t:=a[i];
while j<=m do
begin
if (j<m) and (a[j]>a[j+1]) then j:=j+1;
if t>a[j] then begin a[i]:=a[j];i:=j;j:=2*i; end
else exit;
a[i]:=t;
end;
end;

begin
for i:=1 to n do read(a[i]);
for i:=(n div 2) downto 1 do
sift(a,i,n);
for i:=n downto 2 do
begin
write(a[1]:4);
a[1]:=a[i];
sift(a,1,i-1);
end;
writeln(a[1]:4);
end.

顺便给你几个练习题吧
tyvj:P1001 第K极值竖郑
P1388中中仿返打丢丢
夕日素颜依旧在
2011-11-10 · TA获得超过125个赞
知道答主
回答量:80
采纳率:0%
帮助的人:68.4万
展开全部
freepascal中就内岩吵置了快排、
在亏厅C:\FPC\2.0.4\销枣隐demo\text里面有个qsort.pp
这个考试的时候可以直接用的、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恋上这葱头
2011-11-09 · TA获得超过135个赞
知道答主
回答量:54
采纳率:0%
帮助的人:27.8万
展开全部
procedure kp ( l , r : longint );
var
i , j , m , t : longint;
begin
i := l;
j := r;
m := ans [ ( i + j ) div 2 ];
repeat
while ans [ i ] < m do inc ( i );
while ans [ j ] >誉胡并衫 m do dec ( j );
if i <= j then
begin
t := ans [ i ];
ans [ i ] := ans [ j ];
ans [ j ] := t;
inc ( i );
dec ( j );
end;
until i > j;
if l <庆蔽拦 j then kp ( l , j );
if i < r then kp ( i , r );
end;
追问
还有堆排啊
追答
program duipx;
const n=8;
type arr=array[1..n] of integer;
var a:arr;i:integer;
procedure sift(var a:arr;l,m:integer);
var i,j, t:integer;
begin
i:=l;j:=2*i;t:=a[i];
while ja[j+1]) then j:=j+1;
if t>a[j] then begin a[i]:=a[j];i:=j;j:=2*i; end
else exit;
a[i]:=t;
end;
end;

begin
for i:=1 to n do read(a[i]);
for i:=(n div 2) downto 1 do
sift(a,i,n);
for i:=n downto 2 do
begin
write(a[1]:4);
a[1]:=a[i];
sift(a,1,i-1);
end;
writeln(a[1]:4);
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式