1. 程式人生 > >第一篇部落格:對插入排序和歸併排序演算法時間複雜度的學習

第一篇部落格:對插入排序和歸併排序演算法時間複雜度的學習

    第一次寫部落格,心情難免有點忐忑,不過為了達到心中的小目標,儘可能的用有效率的方法去提升自己。廢話不多說,下面進入正題。

    剛看了網易公開課裡的《麻省理工學院公開課:演算法導論》,受益頗深!國外學校的講課方式確實更有趣味和深度(或許因為在學校壓根沒聽進去過幾節課),在評判一個軟體的時候,有很多因素是比程式的效能讓人更看重的,比如安全性,可擴充套件性,穩定性,以及近期越來越重要的使用者友好性( user friendiness)等等。但是效能依舊被看重的原因是以上的那些穩定性等因素的實現,都是建立在良好的效能之上的。而在紛繁複雜的計算機語言中,演算法的思想是不變的。而一個程式設計師無論在哪一個計算機專業領域上,演算法依舊是傍身的法寶。(以上全是拾人牙慧)

    插入排序:

        原理:

         

         每次處理就是將無序數列的第一個元素與有序數列的元素從後往前逐個進行比較,找出插入位置,將該元素插入到有序數列的合適位置  中。

        時間複雜度:

            對於每一個元素比較的次數是 θ(j)(j表示當前陣列位置)總時間T(n)=從第二項開始到最後一項對其進行求和(稱為算數級數)=θ(n^2)。

    歸併排序:

        原理: