天天看點

php 插入排序算法

/**
 * 插入排序算法
 *
 * 既定前面數字已經排好順序,現在要把第n個數字插入到前面有序的數組中,使得這n個數字也是有序的放入其中,
 * 如此反複循環直至全部排好順序。
 *
 * @param array $arr
 * @return $arr
 */
 function insertSort($arr = array())
 {
     if(!is_array($arr) || empty($arr))
     {
         return $arr;
     }

     $len = count($arr);
     for($i=1; $i<$len; $i++) {
         $tmp = $arr[$i];
         for($j=$i-1;$j>=0;$j--) {
             if($tmp < $arr[$j]) {
                 //比較大小當數字小時交換位置,将後面的數字與前面的數字進行互換操作
                 $arr[$j+1] = $arr[$j];
                 $arr[$j] = $tmp;
             } else {
                 //不需要,直接跳過
                 break;
             }
         }
     }
     return $arr;
 }