PHP實現四種排序-插入排序


代碼實現:

/**
*	插入排序
*	在要排序的一組數中,假設前面的數已經是排好順序的,現在要把第n個數插到前面的有序數中,使得這n個數也是排好順序的。如此反復循環,直到全部排好順序。
*/
function insertSort($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;
}
//測試
$arr = [5,2,1,1,3,1,4];
// $arr = [5,2,0,0];
$end = insertSort($arr);
echo "<pre>";
print_r($end);

過程分析:

第1輪
Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
第2輪
Array ( [0] => 2 [1] => 1 [2] => 5 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
第3輪
Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 5 [4] => 3 [5] => 1 [6] => 4 )
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 5 [4] => 3 [5] => 1 [6] => 4 )
第4輪
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 1 [6] => 4 )
第5輪
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => 5 [6] => 4 )
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 3 [5] => 5 [6] => 4 )
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 5 [6] => 4 )
第6輪
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM