插入排序之PHP實現

前言

插入排序的代碼實現雖然沒有冒泡排序和選擇排序那麼簡單粗暴,但它的原理應該是最容易理解的了,因爲只要打過撲克牌的人都應該能夠秒懂。插入排序是一種最簡單直觀的排序算法,它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。

插入排序和冒泡排序一樣,也有一種優化算法,叫做拆半插入。

算法步驟

1、將第一待排序序列第一個元素看做一個有序序列,把第二個元素到最後一個元素當成是未排序序列。

2、從頭到尾依次掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)

動圖演示

PHP代碼實現

function InsertSort($arr){
    $num = count($arr);
    // 遍歷數組
    for ($i = 1;$i < $num; $i++) {
        // 獲得當前值
        $iTemp = $arr[$i];
        // 獲得當前值的前一個位置
        $iPos = $i - 1;
        // 如果當前值小於前一個值切未到數組開始位置
        while (($iPos >= 0) && ($iTemp < $arr[$iPos])) {
            // 把前一個的值往後放一位
            $arr[$iPos + 1] = $arr[$iPos];
            // 位置遞減
            $iPos--;
        }
        $arr[$iPos+1] = $iTemp;
    }
    return $arr;
}

function InsertSort($arr) {
    $length = count($arr);
    for ($i = 0; $i < $length - 1; $i++) {
        for ($j = $i + 1; $j > 0; $j--) {
            if ($arr[$j] < $arr[$j - 1]) {
                $temp = $arr[$j - 1];
                $arr[$j - 1] = $arr[$j];
                $arr[$j] = $temp;
            } else {
                break;
            }
        }
    }
    return $arr;
}

 

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