回 帖 发 新 帖 刷新版面

主题:一道pascal的题

我才开始学这个程序,主要是教学有,课余看了下,但是基本属于最菜鸟的了。
这里有道题一直没弄出来,就是:将10个任意自然数以升序或降序排列,要求画出流程图和写出程序。最主要的是流程图。
哪个高手会的教下。谢

回复列表 (共1个回复)

沙发

我只会写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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册