请Pascal程序高手指点。(一个数的排序问题)

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:06:36
“输入20个数,将它们按照从大到小的顺序排序后输出”(要求用堆排序来实现)此程序该如何编写?

program asdf;
const n=20;
var
a:array[1..100]of integer;
i,x:integer;
procedure down(i,m:integer);
var
x:integer;
begin
while i*2<=m do
begin
i:=i*2;
if (i<m) and (a[i+1]>a[i]) then inc(i);
if a[i]>a[i div 2] then
begin
x:=a[i div 2];
a[i div 2]:=a[i];
a[i]:=x;
end
else break;
end;
end;
begin
randomize;
for i:=1 to n do
read(a[i]);
for i:= n div 2 downto 1 do