演算法時間複雜度(如何快速記住算法複雜度)

演算法時間複雜度(如何快速記住算法複雜度)

演算法時間複雜度(如何快速記住算法複雜度)


資料來源: https://posts.careerengine.us/p/5d6a88dc9ce3d42369a18200




PS 一般標準 n^2


常見的六種時間複雜度與演算法 ( https://medium.com/appworks-school/%E5%88%9D%E5%AD%B8%E8%80%85%E5%AD%B8%E6%BC%94%E7%AE%97%E6%B3%95-%E5%BE%9E%E6%99%82%E9%96%93%E8%A4%87%E9%9B%9C%E5%BA%A6%E8%AA%8D%E8%AD%98%E5%B8%B8%E8%A6%8B%E6%BC%94%E7%AE%97%E6%B3%95-%E4%B8%80-b46fece65ba5 )


O(1) = 陣列讀取


O(log n) = 二分搜尋


O(nlog n) = 合併排序


O(n) = 簡易搜尋(依序搜尋)


O(n^2) = 選擇排序 (氣泡排序)


O(2^n) = 費波那契數列


O(n^n) = fuck


O(n!) = ORZ

9 thoughts on “演算法時間複雜度(如何快速記住算法複雜度)

    1. JS code

      var swap = function(data, i, j){
      var tmp = data[i];
      data[i] = data[j];
      data[j] = tmp;
      };

      var bubbleSort = function(data){
      var flag = true;
      for(var i = 0; i < data.length – 1 && flag; i++){
      flag = false;
      for(var j = 0; j < data.length – i – 1; j++){
      if(data[j+1] < data[j]){
      swap(data, j+1, j);
      flag = true;
      }
      }
      }
      };

  1. 簡易搜尋
    依序比對搜尋
    雙層迴圈搜尋
    時間複雜度 O(n) 比 氣排 (氣泡排序) 好

  2. 簡易搜尋(依序搜尋) VS 二分搜尋 時間複雜度

    資料來源:https://mp.weixin.qq.com/s/rLXlvEAowJCAGu3TMvSvqw

    比二分查找更簡單的算法,我能想到的只有遍歷枚舉,說的直白些,就是寫for循環。

    我們通常需要在一個數組當中找一個數,這個時候我們可以寫一個for循環去挨個查找,這麼下來,時間複雜度就會是O(n)。

    如果我告訴你,這個數組是排序好的,這時我們就可以使用二分查找去找這個數。

    O(n) 和O(logn) 可能直接看表達式不夠形象,我舉個例子你就懂了,假設數組長度是4294967296,如果是O(n) 時間的話,最差情況下你需要去找4294967296次,如果是O(logn),最差情況下你只需要去找32 次。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *