主题:一道pascal的题
lusmmeng
[专家分:0] 发布于 2009-05-01 20:40:00
我才开始学这个程序,主要是教学有,课余看了下,但是基本属于最菜鸟的了。
这里有道题一直没弄出来,就是:将10个任意自然数以升序或降序排列,要求画出流程图和写出程序。最主要的是流程图。
哪个高手会的教下。谢
回复列表 (共1个回复)
沙发
angwuy [专家分:2280] 发布于 2009-05-02 18:40:00
我只会写QuickSort的程序,不会写流程图...
program Qsort;
const
maxn=100;
var
a:array[1..maxn]of longint;
ls,rs:array[1..maxn]of longint;
l,r,i,j,x,y,n,t:longint;
begin
readln(n);
for i:=1 to n do
read(a[i]);
readln;
t:=1;
ls[1]:=1;
rs[1]:=n;
while t>0 do
begin
l:=ls[t];
r:=rs[t];
dec(t);
i:=l;
j:=r;
x:=a[(l+r) shr 1];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if i<=j then
begin
y:=a[i];a[i]:=a[j];a[j]:=y;
inc(i);dec(j);
end;
until i>j;
if i<r then
begin
inc(t);
ls[t]:=i;
rs[t]:=r;
end;
if l<j then
begin
inc(t);
ls[t]:=l;
rs[t]:=j;
end;
end;
for i:=1 to n do
write(a[i],' ');
writeln;
end.
我来回复