畫江湖之演算法篇【排序演算法】插入排序

Krisji發表於2019-03-20

1 插入排序簡介

概括:

  • 插入排序(Insertion-Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。
    小夥伴們仔細看下面的動態圖哦

完整程式碼塊

public static function insert($arr){
        $size = count($arr);
        for ($i=0; $i <$size-1 ; $i++) {
            for ($j=$i+1; $j >0 ; $j--) {
                if($arr[$j]<$arr[$j-1]){
                    $tmp=$arr[$j];
                    $arr[$j]=$arr[$j-1];
                    $arr[$j-1]=$tmp;
                }
            }
        }
        return $arr;
    }

2 分析程式碼塊 具體分析到程式碼註釋哦 ~

插入排序

public static function insert($arr){
        $size = count($arr);//先計算出陣列的大小
        for ($i=0; $i <$size-1 ; $i++) {//外部迴圈 有多少陣列 就迴圈多少次
            for ($j=$i+1; $j >0 ; $j--) {//內部迴圈 遞減 記住為什麼要遞減
                if($arr[$j]<$arr[$j-1]){//如果當前的值 小於上一個值 為什麼要比較上一個值 為了在已排序序列中從後向前掃描
                    $tmp=$arr[$j];//定義當前值的臨時變數
                    $arr[$j]=$arr[$j-1];//替換當前值為上一個值
                    $arr[$j-1]=$tmp;//上一個值替換為當前的值的臨時變數
                }
            }
        }
        return $arr;//返回排序好的值
    }
    // print_r(Sort::insert($arr));

3 時間複雜度 分析

file

相關文章