回覆列表
  • 1 # 影片好笑

    常見的Big-oh  對於比較2個不同的時間複雜度,千萬不可以用直觀的方法來判斷。例如有2種演算法,時間複雜度各為O(n)與O(n2)。如果這2種方法的實際執行次數T"(n)=2n,T"(n)=n2,則n>2時,2n<n2,對時間複雜度而言,O(n)優於O(n2)(所謂"優於",就是所花的時間較少)。注意!當n≦2時2n≧n2,則O(n2)優於O(n)。由上面的說明,我們可以清楚知道時間複雜度事實上只表示實際次數的一個量度的層級,並不是真實的執行次數。此外,有關目前常見的Big-oh有下列幾種情形:1.O(1)或O(c):稱為常數時間(constant time)  這表示演算法則的執行時間是一個常數倍,而忽略資料集合大小的變化。一個例子是在計算機中它存取RAM所花的時間,在記憶體中去讀取及寫入所用的時間是相同的,而不考慮整個記憶體的數量。如果有這樣的演算法則存在,則我們可以在任何大小的資料集合中自由的使用,而不需要擔心時間或運算的次數會一直成長或變得很高。2. O(n):稱為線性時間(linear time)  它執行的時間會隨資料集合的大小而線性成長。我們可以找到一個例子是在一個沒有排列過的資料集中要找一個最大元素,且我們以簡單的方式去解釋其內容,直到我們將所有的資料都找過並且找到最大值為止。3.O(log2n):稱為次線性時間(sub-linear time)  這一種函式的成長速度比線性的程式還慢,而此常數(它是不成長的)的情形還快。4.O(n2):稱為平方時間(quadratic time)  演算法則執行時間會成二次方的成長,這種會變得不切實際,特別是當資料集合的大小變得很大時。5.O(n3):稱為立方時間(cubic time)6.O(2n):稱為指數時間(exponential time)7.O(n1og2n)介於線性及二次方成長的中間之行為模式。

  • 中秋節和大豐收的關聯?
  • 什麼食療可以止咳化痰?