以PHP学习《算法导论》——插入排序

 开篇

学计算机的好像都要学算法与数据结构,在算法书里面《算法导论》 应该算是经典之作了。我希望能在2009年好好的拜读这本书,当然他太厚了,也许需要更长的时间去揣摩。如同武功秘籍,需要些悟性,还需要平时上手练一练,比划比划。

PHP是我目前吃饭用的家伙,所以用PHP这件兵器来修炼《算法导论》这部秘笈,以希望自己的内力可以有所提高。

如果各位前辈,发现我出了什么错误,那么请在鄙视和嗤笑过后直接指出我的错误。感激不尽。

插入排序——Insertion-Sort

算法导论的第二章开篇详细介绍了插入排序的原理。PHP的实现如下:

  1. /**
  2.  * Insertion-Sort
  3.  *
  4.  * @param array $A
  5.  * @return array
  6.  */
  7. function insertionSort($A=array())
  8. {
  9.      for ($j=1;$j<count($A);$j++){
  10.         $key = $A[$j];
  11.         $i = $j-1;
  12.          while  ($i>=0 && $A[$i]>$key) {
  13.             $A[$i+1] = $A[$i];
  14.             $i--;
  15.         }
  16.         $A[$i+1] = $key;
  17.     }
  18.      return  $A;
  19. }

在2.1节后面的练习题里2.1-2要求重写插入排序以非递增的顺序排序。照葫芦画瓢:

  1. /**
  2.  * Sort into NONincreasing
  3.  *
  4.  * @param array $A
  5.  * @return array
  6.  */
  7. function  insertionSortDesc( $A = array ()){
  8.      for ( $j =1; $j < count ( $A ); $j ++){
  9.          $key  =  $A [ $j ];
  10.          $i  =  $j -1;
  11.          while  ( $i >=0 &&  $A [ $i ]< $key ) {
  12.              $A [ $i +1] =  $A [ $i ];
  13.              $i --;
  14.         }
  15.          $A [ $i +1] =  $key ;
  16.     }
  17.      return   $A ;
  18. }

当然在函数之后最好能进行一下测试,没那么严格,大概是个意思吧:

  1. function  test()
  2. {
  3.      $A  =  array (5,2,4,6,1,3);
  4.      $B  = insertionSort( $A );
  5.     print_r( $B );
  6.     
  7.      $C  = insertionSortDesc( $A );
  8.     print_r( $C );
  9. }
  10. test();

把测试文件和上面两个函数放到一起,跑一下吧~一个升序一个降序。

 

祝看到帖子的人元旦快乐~!

另外:做人要厚道老实,转帖要注明出处。(估计没人转这个帖子=。=||)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值