天天看点

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;
 }