排序演算法總結 插入排序

2021-09-26 15:13:34 字數 643 閱讀 3587

插入排序,顧名思義就是將乙個元素插入到適當的位置。其演算法核心是

1.將第乙個元素看做是個單獨的序列。顯然,只有乙個元素的序列肯定是有序序列。

2.然後將和第二個元素做比較。如果第二個元素小,那麼就將第二個元素插入到第乙個元素前面,這樣我們就得到了乙個擁有兩個元素的有序序列。

3.依次掃瞄剩餘元素,每掃瞄到乙個元素,就將其插入到前面已經排好序的序列中。

4.掃瞄完最後乙個元素,插入到其適當的位置,我們就可以得到乙個完整的有序序列。

上**:

void insertsort(int  *a, int n) 

} return;

}

複雜度分析

時間複雜度:外層n次迴圈,內層最多有n次迴圈,所以時間複雜度為o(n^2)

空間複雜度:並沒有額外的記憶體使用,所以空間複雜度為o(1)

穩定性分析

在while迴圈裡,如果兩個元素相等並沒有進行交換,所以插入排序是個穩定排序演算法

適用場景分析

插入排序的時間複雜度較高,不適合大數量元素排序。但是當整個序列的大部分元素都是有序的時候,插入排序效果較好。演算法思想和**實現也較為簡單。

排序演算法總結 1 插入排序

主要分為插入排序 交換排序 選擇排序 歸併排序 計數 也有叫分配 排序。一 插入排序。插入排序,就是每次將乙個待排序的物件,插入到乙個有序的資料序列中,得到乙個新容量加1的資料有序序列。如此往復。可分為直接插入排序 二分法插入排序 希爾排序。不同插入方法的區別就是尋找插入位置的方法不同。1 直接插入...

排序演算法總結(三)插入排序

插入排序的原理是從陣列的某個位置開始依次和前面的位置數相比,找到插入位置,將數插入到該位置,這樣多次插入後,得到的將是乙個有序陣列。include using namespace std void insertsort int arrays,int len int main void inserts...

排序演算法總結(3) 插入排序

插入排序是區域性有序的,陣列中有乙個元素被作為標記元素,標記元素的左側是有序的,右側是無序的,即標記元素是無序部分的第乙個元素。此時要求被標記元素出列,且和有序部分的第乙個元素進行比較,若標記元素小於有序部分的最大元素,則最大元素右移到標記元素的位置,標記元素和次大元素繼續比較,直到標記元素大於有序...