最好、最壞同平均情況複雜度
(由最好情況複雜度跳轉過嚟)
呢篇文 需要熟悉呢方面嘅人幫手寫。 |
概論
編輯睇埋:運算複雜度
舉例說明,用線性搜尋(linear search)演算法做例子:試諗家陣要指定一個 input 數,再由一條 input 陣列度搵個數出嚟,如果陣列入面冇嗰個數,就顯示(例如)「搵唔到」,即係
- Input:
- 要摷嗰條陣列,同埋
- 想搵嗰個數;
- Output:
- 想要嗰個數喺陣列嘅第幾個位(好似下圖噉由 0 數起),
- 如果陣列入面冇嗰個數,就出「搵唔到」噉嘅字。
要解呢條問題,線性搜尋係最簡單直接嗰種做法-即係將條陣列入面啲數逐個逐個攞嚟睇,搵到就畀嗰個數出嚟做 output,睇完嗮成條陣列都冇就畀「搵唔到」做 output。如果用線性搜尋解決條問題嘅話[2]:
- 喺最好情況下,陣列入面有想要嗰個數,而且個數咁啱得咁橋喺正條陣列第一格,所以電腦行 1 步就行完,用符號表達係 ;
- 喺最壞情況下,陣列入面有想要嗰個數,但個數咁啱得咁橋喺正條陣列最尾嗰格,所以電腦行 n 步至行完(n = 條陣列嘅長度),用大 O 符號表達係 ;
- 簡化講,平均情況複雜度( )就要噉計[註 1]:
- ,當中 係指「input 大細 嗰陣,要行幾多步」;
-喺廿一世紀初嘅應用上,最壞情況複雜度一般畀人視為重要資訊,分析演算法嗰時實會睇;相比之下,啲人比較少會留意平均同最好情況複雜度[1]。
註釋
編輯睇埋
編輯攷
編輯- ↑ 1.0 1.1 0.1 Worst and best case analysis. web.stanford.edu.
- ↑ 2.0 2.1 Worst, Average and Best Case Analysis of Algorithms. GeeksForGeeks.
- ↑ Time Complexity Analysis. Medium.