PHP实战中知识总结 / 排序算法 - 直接插入排序算法

直接插入排序的基本思想是 :将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)。

即每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

$arr = [9,1,5,8,3,7,4,2,20];
$result = $this->sort($arr);
public function insertSort($arr)
{
  $res = [];//要插入的数组
  $res[0] = $arr[0]; //将要排序的第一个值存进数组
  for ($i = 1; $i < count($arr); $i++) {    //循环 1,5,8,3,7,4,6,20
    for ($j = count($res); $j > 0; $j--) {  //循环20,6,4,7,3,8,5,1
      if ($res[$j - 1] > $arr[$i]) {    // 倒序排序(升序则改成<)
        $res[$j] = $arr[$i];
        break;
      } else {
        $tmp = $res[$j - 1];
        $res[$j - 1] = $arr[$i];
        $res[$j] = $tmp;//向后移位
      }
    }
  }
  return $res;
}

PHP实战中知识总结