1. 程式人生 > 其它 >多測師杭州拱墅校區肖sir_高階金牌講師_金額專業術語(參考)

多測師杭州拱墅校區肖sir_高階金牌講師_金額專業術語(參考)

直接插入排序(Straight Insertion Sort)核心思想是將是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增1的有序表。跟打撲克牌一樣。開始時,我們的左手為空並且桌子上的牌面向下。然後,我們每次從桌子上拿走一張牌並將它插入左手中正確的位置。為了找到一張牌的正確位置,我們從右到左將它與已在手中的每張牌進行比較。

例如我們有一組數字:{5,2,4,6,1,3},我們要將這組數字從小到大進行排列。 先假設有序列表中只有第1個元素,然後從第二個數字開始,將其認為是新增加的數字,這樣第二個數字只需與其左邊的第一個數字比較後排好序;第三個數字時,只需與前兩個數字比較即可;以此類推,直到最後一個數字與前面的所有數字比較結束,插入排序完成。

實現邏輯:

① 從第一個元素開始,該元素可以認為已經被排序。
② 取出下一個元素(初始下標為1),在已經排序的元素序列中從後向前掃描
③ 如果該元素(已排序)大於新元素,將該元素移到下一位置
④ 重複步驟③,直到找到已排序的元素小於或者等於新元素的位置
⑤將新元素插入到該位置
⑥ 重複步驟②~⑤

 

程式碼實現:

        function insertSort(arr){
            const len = arr.length;
            for(let i=1;i<len;i++){
                const temp = arr[i];
                
for(j=i-1;j>=0;j--){ if(arr[j] > temp) { arr[j+i] = arr[j]; } else break; } arr[j+1] = temp; } }