pascal 实现排序法

   
  procedure   swap(var   x,y:integer);  
  var  
      temp:integer;  
  begin  
      temp:=x;  
      x:=y;  
      y:=temp;  
  end;  
   
  //冒泡排序  
  procedure   BubbleSort(var   A:   array   of   Integer);  
  var  
      I,   J,   T:   Integer;  
  begin  
      for   I   :=   High(A)   downto   Low(A)   do  
          for   J   :=   Low(A)   to   High(A)   -   1   do  
              if   A[J]   >   A[J   +   1]   then  
              begin  
                  swap(A[J],   A[J   +   1]);  
                  T   :=   A[J];  
                  A[J]   :=   A[J   +   1];  
                  A[J   +   1]   :=   T;  
              end;  
  end;  
   
  //选择排序  
  procedure   SelectionSort(var   A:   array   of   Integer);  
  var  
      I,   J,   T:   Integer;  
  begin  
      for   I   :=   Low(A)   to   High(A)   -   1   do  
          for   J   :=   High(A)   downto   I   +   1   do  
              if   A[I]   >   A[J]   then  
              begin  
                  Swap(A[I],   A[J]);  
                  T   :=   A[I];  
                  A[I]   :=   A[J];  
                  A[J]   :=   T;  
                  if   Terminated   then   Exit;  
              end;  
  end;  
   
  //快速排序  
  procedure   QuickSort(var   A:   array   of   Integer);  
   
      procedure   QuickSortSub(var   A:   array   of   Integer;   iLo,   iHi:   Integer);  
      var  
          Lo,   Hi,   Mid,   T:   Integer;  
      begin  
          Lo   :=   iLo;  
          Hi   :=   iHi;  
          Mid   :=   A[(Lo   +   Hi)   div   2];  
          repeat  
              while   A[Lo]   <   Mid   do   Inc(Lo);  
              while   A[Hi]   >   Mid   do   Dec(Hi);  
              if   Lo   <=   Hi   then  
              begin  
                  Swap(A[Lo],   A[Hi]);  
                  T   :=   A[Lo];  
                  A[Lo]   :=   A[Hi];  
                  A[Hi]   :=   T;  
                  Inc(Lo);  
                  Dec(Hi);  
              end;  
          until   Lo   >   Hi;  
          if   Hi   >   iLo   then   QuickSortSub(A,   iLo,   Hi);  
          if   Lo   <   iHi   then   QuickSortSub(A,   Lo,   iHi);  
      end;  
   
  begin  
      QuickSortSub(A,   Low(A),   High(A));  
  end;

转载于:https://www.cnblogs.com/sdjxcolin/archive/2007/08/09/849557.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值