PHP实现插入排序

插入排序思想:

  1. 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。 
  2. 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描, 
  3. 找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序), 
  4. 因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
     1 <?php
     2 $arr = [2, 3, 1, 6, 4, 7, 5, 9];
     3 
     4 var_dump(insertsort($arr));
     5 function insertSort($arr) {
     6     $len = count($arr);
     7     for ($i = 1; $i < $len; $i++) {
     8         // 当前值
     9         $key = $arr[$i];
    10         // 当前位置
    11         $pos = $i;
    12         // 如是当前位置 >0 && 当前值的前一个值 > 当前值 选出最值
    13         while ($pos > 0 && $arr[$pos - 1] > $key) {
    14             // 当前值  =  前一个值
    15             $arr[$pos] = $arr[$pos - 1];
    16             // 当前位置后移
    17             $pos = $pos - 1;
    18         }
    19         // 找到当前值的位置
    20         $arr[$pos] = $key;
    21     }
    22     return $arr;
    23 }
    

     

posted @ 2017-02-13 22:27  cat_crazy  阅读(1764)  评论(0编辑  收藏  举报