少壯不努力,老大刷水題。過去讀書的時候因為腦子不好使,很多概念,公式,演算法都記不住,等長大了,營養趕上來了,才學習的時候就會覺得更加的深刻。
直接插入排序就像平常我們打撲克牌一樣,我們總是在別人發牌的時候,拿到一張牌就把它插到合適的位置上,這個過程中我們的肉眼和大腦做了3件事:
1、拿到新的牌,檢查這張牌的數值是多少(從陣列裡面獲取新的元素)
2、從手上的牌裡面檢索新加入的牌應該插入的位置(檢索當前元素插入的位置)
3、手指張開一點,對手上的牌進行擴容(對已排序陣列進行擴容,擴容期間需要對元素進行移位)
有了這些戰略上的指導,我們就可以進行**實現了:
演算法特點
時間複雜度為o(n^2),空間複雜度為o(1),比較適用於資料集合基本有序的情況,這樣子時間複雜度約為o(n),否則,當n越大,時間複雜度就越高,效率低。
演算法基礎 直接插入排序
一 直接插入排序 基本思想 每次將乙個待排序的序列的乙個元素,插入到已經排好序的序列中。如待排序列a 假設我們希望序列是從下到大排列的,那麼,首先將序列a分解為a1 和a2 其中a1作為排好的序列,這樣一來,首先從a2中取第乙個元素 1,與a1中的1比較,按從下到大順序把 1放入a1中,a2的其他元...
基礎演算法 直接插入排序
把陣列劃分為左右兩個區域,有序區和無序區,開始有序區只有乙個元素,就是陣列最左邊的元素。每次取得無序區第乙個元素x,從有序區最右邊的值開始到最左邊,把比x大得元素都往後移動乙個位置,直到找到乙個不大於x的位置,或者到了最左邊 即有序區所有元素都比x大,x應該插入到最前面 停下來的位置就是插入元素x的...
基礎演算法 直接插入排序
它的演算法思想是 把要排序的陣列分為了兩個部分,一部分是經過插入排序後有序的部分,另一部分是除去第一部分待插入的元素 先將第一部分排序完成,然後再插入這個元素.插入排序由於操作不盡相同,可分為直接插入排序,折半插入排序 又稱二分插入排序 鍊錶插入排序,希爾排序。我們先來看下直接插入排序。直接插入排序...