永发信息网

pascal 快速排序

答案:1  悬赏:10  手机版
解决时间 2021-07-25 15:49
  • 提问者网友:临风不自傲
  • 2021-07-24 17:04

program quicksort;
var
a:array[1..100000] of longint;
i,n,s:longint;
procedure qs(s,t:longint);
var
i,j,u:longint;
begin
if s<t then
begin
i:=s;
j:=t;
u:=a[s];
repeat
while (i<j) and (u<a[j]) do dec(j);
if (i<j) then begin a[i]:=a[j]; inc(i); end;
while (i<j) and (a[i]<u) do inc(i);
if (i<j) then begin a[j]:=a[i]; dec(j); end;
until i=j;
a[i]:=u;
qs(s,i-1);
qs(i+1,t);
end;
end;
begin
read(n);
for i:=1 to n do read(a[i]);
qs(1,n);
for i:=1 to n-1 do write(a[i],' ');
writeln(a[n]);
end.

最佳答案
  • 五星知识达人网友:山有枢
  • 2021-07-24 17:13
对的,以下是运行截图,对10个数进行排序,我加个了readln暂停:




从大到小好像就要改一下了,你现在这个是升序排列。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯