1.時間複雜度與空間複雜度概要

一、 算法時間複雜度
  • 符號:O(f(n))
  • 含義:某個算法需要執行的指令數的量級
  • 定義:
    • 學術界:算法執行上界
    • 工業界:算法執行的最低上界
  • 注意點:通常算法時間複雜度與算法所處環境有關,如插入排序最差情況爲O(n^2),最好情況爲O(1),但一般所說的插入排序的時間複雜度爲O(n^2)是平均情況(絕大多數情況下的複雜度),快速排序同理,最差爲O(n^2),最好情況爲O(nlogn),而平均情況爲O(nlogn),這也就表示爲快速排序的平均情況。
二、空間複雜度:
  • 符號:O(f(n))
  • 含義:算法運行過程中額外開闢的空間的大小
  • 注意點:當有遞歸時,還需要考慮遞歸所佔的空間,因爲需要保存斷點以及臨時變量,通常來說,遞歸本身所需的空間複雜度爲O(遞歸深度)
三、數據規模:
  • 條件:運行10^8個指令需要一秒(通常來說),所以如果需要在1秒內執行完畢某個算法,
  • 當一個算法是O(n^2),數據規模必須小於10^4,而由於每個數據的執行指令通常大於1,所以一般來說,當數據規模小於10^3時,才能保證一定能在1秒內執行完畢某個算法。
  • 當一個算法是O(nlogn),數據規模必須小於10^7,而保險來看,數據規模必須小於10^6。
  • 而當一個算法是O(n),數據規模必須小於10^8,而保險來看,數據規模必須小於10^7。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章