給定乙個無序數列,模擬乙個指標從第0位開始向後,始終保持當前位置左邊的數列是有序的。
指標位置上的元素依次與前面的元素比較,當遇到小於自己的數或右邊已經沒有元素時,都停止比較,開始下一輪。
生活中模擬:撲克牌抓牌時,抓到的牌會從依次向左比較,並插入到左側的有序數列中。
插入排序每趟比較的停止條件是,當前面沒有元素或遇到了比自己小的數。
因此,根據數列樣本的不同,執行結果肯定不同。對於最差樣本——完全逆序的數列,時間複雜度同冒泡和選擇一樣,都是o(n^2),而對於本身就是正序的數列,時間複雜度就是o(n)。
但是時間複雜度是以最差情況考慮的指標,因此插入排序的時間複雜度是 o(n^2),但由於執行時間會隨樣本情況而改變,因此它是不穩定的排序演算法,某些情況下要優於冒泡和選擇。
排序演算法 插入排序
插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排...
排序演算法 插入排序
排序演算法之插入排序 參照新版程式 下面是錯誤的理解,正確的參考,後文已經修改過的部分。選擇排序,顧名思義,就是選擇乙個元素進行排序。原理 將原始序列分成兩部分,一部分已經有序,一部分無序。將無序中的元素逐個插入到有序序列中。這個也是兩層迴圈,就我個人理解,與氣泡排序是乙個原理。氣泡排序是每次都從無...
排序演算法 插入排序
插入排序簡單來說 就是將乙個資料插入到已經到排好的序列中,但要求插入後仍然有序。這種方法一般適用少量資料的。一 主要的插入排序 直接插入排序 二分插入排序 鍊錶插入排序,希爾排序,是屬於穩定排序的一種。二 直接插入排序 把n個待排序的元素看成為乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無...