演算法導論 排序演算法學習(1)

2021-06-29 01:56:47 字數 426 閱讀 1383

插入排序有點類似於我們打牌時整理手牌的過程,以左手拿牌,右手起牌為例。左手上面的牌,總是按照從小到大(從大到小)的順序排列,而右手拿上來的牌則根據大小在左手選擇位置插入,從而依舊保證了左手手牌依然是有序的。

void insertsort(int *array,int length)

array[j+1] = key;

}}

**流程如下:從陣列中第二個元素開始抽取,依次與已排好順序的部分進行比較,如果抽取的元素較小且此時仍有元素未進行比較,則前移目標繼續進行比較,直到找到應插入的位置,或者達到邊界為止。

插入排序的優點在於占用空間較小,所有操作都在原陣列上進行,即空間複雜度為1.但是時間複雜度不好把握,在最壞的情況下,每次抽取元素都需要遍歷一次該元素之前的陣列,這時,時間複雜度為n-1+n-2+…+1,即為o(n的平方)。

演算法學習 1 快速排序

序 快速排序比較難以理解,多baidu下,多想想最後就明白了,以下是自己的理解 有興趣的可以參考 來學習演算法 有兩種實現模式 1 找到乙個交換乙個 左右側 如下 void quicksort qsort wk int s,int lindex,int rindex if lindex rindex...

演算法學習(1) 快速排序

課程參考 資料結構 浙江大學 10.1.1 演算法概述 10.1.2 選主元 10.1.3 子集劃分 10.1.4 演算法實現 演算法視覺化 史上最容易理解的 十大經典演算法 動態圖展示 網上有的 看了下都比較長,陳越姥姥給的演算法思路較清晰,量少,遂記錄之。快速排序的思想是首先選取乙個主元,然後將...

演算法導論學習筆記 1 基礎排序演算法

最近從頭開始學習演算法導論,作為乙個非計算機專業的學生,我的目的也就是為了找工作的時候能多點籌碼 但是學習過程中還是有不少收穫的,順便也能練習下python程式設計水平,因此記錄下學習內容 第一章是演算法基礎,這裡介紹了2種排序方法 插入排序和歸併排序 例子還算比較淺顯易懂。對於插入排序,可以用乙個...