回覆列表
  • 1 # pietr49411

    O後面的括號中有一個函式,指明某個演算法的耗時/耗空間與資料增長量之間的關係。其中的n代表輸入資料的量。時間複雜度為O(n),就代表資料量增大幾倍,耗時也增大幾倍。比如常見的遍歷演算法。所以O(2)相比於O(1)資料量會更多,同時需要執行的時間會更多。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用T(n)表示,若有某個輔助函式f(n),存在一個正常數c使得fn*c>=T(n)恆成立。記作T(n)=O(f(n)),稱O(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。擴充套件資料時間複雜度O(n^2),就代表資料量增大n倍時,耗時增大n的平方倍,這是比線性更高的時間複雜度。比如氣泡排序,就是典型的O(n^2)的演算法,對n個數排序,需要掃描n×n次。比如O(logn),當資料增大n倍時,耗時增大logn倍(這裡的log是以2為底的,比如,當資料增大256倍時,耗時只增大8倍,是比線性還要低的時間複雜度)。二分查詢就是O(logn)的演算法,每找一次排除一半的可能,256個數據中查詢只要找8次就可以找到目標。O(nlogn)同理,就是n乘以logn,當資料增大256倍時,耗時增大256*8=2048倍。這個複雜度高於線性低於平方。歸併排序就是O(nlogn)的時間複雜度。

  • 中秋節和大豐收的關聯?
  • 1.5萬預算兩人蜜月旅行,6-9天,去哪比較好,求大神推薦,感激?