PHP 排序算法(三) 插入排序

插入排序(以升序爲例)

核心思想:將數組看成兩個數組,左邊的是有序數組,右邊的是無序數組。將右邊的元素,一個個插入到有序數組中。

首先要找一個基準,所以就拿第一個元素 $arr[0]來作爲有序數組的第一個元素

function insertSort($arr) {
    //獲取數組單元個數
    $count = count($arr);
    //外層循環用於從未排序區域中取出待排序元素
    for ($i=1; $i < $count; $i++) {
        //獲取當前即將要插入的元素值
        $temp = $arr[$i];
        //內層循環用於從已排序區域尋找待排序元素的插入位置
        for ($j=$i-1; $j >= 0; $j--) {
            //如果$arr[$i]比已排序區域的$arr[$j]小,就後移$arr[$j]
            if ($temp < $arr[$j]) {
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $temp;
            } else {
                //如果$arr[$i]不小於$arr[$j],則對已排序區無需再排序
                break;
            }
        }
    }
    return $arr;
}

$arr = array(6,2,4,3,5,7,9,1,10);
print_r(insertSort($arr));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章