2007-08-22

    标准快速排序算法 - [Algorithms]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://conoon.blogbus.com/logs/7858719.html

    program kuaisu(input,output);
    const n=10;
    var
       s:array[1..10] of integer;
       k,l,m,o:integer;

    procedure qsort(lx,rx:integer);
    var
       I,j,t:integer;
    Begin
       I:=lx;j:=rx;t:=s[I];
       Repeat
          While (s[j]>t) and (j>I) do
             Begin
                k:=k+1;
                j:=j-1
             end;
       if I<j then
    begin
       s[I]:=s[j];I:=I+1;l:=l+1;
       while (s[I]<t) and (I<j) do
           begin

              I:=I+1
          End;
       If I<j then
    begin
             S[j]:=s[I];j:=j-1
          End;
    End;
    Until I=j;
    S[I]:=t;I:=I+1;j:=j-1;   o:=o+1;
    writeln('第',o:3,'次排序的结果:');
    for  m:=1 to 10 do write(s[m]:5);
    writeln;
    If lx<j then qsort(lx,j);
    If I<rx then qsort(I,rx)
    End;{过程qsort结束}

    Begin
       Writeln('input 10 integer num:');
       For m:=1 to n do read(s[m]);
       K:=0;l:=1; o:=0;
       Qsort(l,n);
       Writeln('shu chu jie guo:');
       For m:=1 to n do write(s[m]:4) ;
    End.

    {快速排序法的一躺排序程序}

    program kuaisu(input,output);

    type

     arr=array[1..7] of integer;

    var

      a:arr;

      i,j,k:integer;

     

      procedure sort(var a:arr;var m,n:integer);

      var

        x,p,q:integer;

      begin

        x:=a[m];

        repeat

          while ((m<n) and (a[n]>x)) do n:=n-1;

          p:=a[m];a[m]:=a[n];a[n]:=p;

          while ((m<n) and (a[m]<x)) do m:=m+1;

          p:=a[m];a[m]:=a[n];a[n]:=p

        until m=n

      end;

     

    begin

       writeln('input 10 integer num:');

       i:=1;j:=1;k:=7;

       repeat

          read(a[i]);

          i:=i+1;

       until i>7;

       sort(a,j,k);

       for i:=1 to 7 do

          write(a[i]:4);

       writeln('j=',j:4,'k:',k:4)

    end.


    随机文章:

    枚举法 2007-08-22

    收藏到:Del.icio.us




    Tag:
    引用地址:

发表评论

您将收到博主的回复邮件
记住我