大O表示法 時間複雜度

2021-08-03 22:02:23 字數 808 閱讀 5622

引入原因:用另乙個(通常更簡單的)函式來描述乙個函式數量級的漸近上界。

定義:如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t(n),它是n的某一函式。t(n)稱為這一演算法的「時間複雜度」。

某個演算法的複雜度到達了這個問題複雜度的下界,那就稱這樣的演算法是最佳演算法

決定演算法複雜度的是執行次數最多的語句

複雜度與時間效率的關係:

c < log2n < n < n*log2n < n2 < n3 < 2n < 3n < n! (c是乙個常量)

|————————–|————————–|————-|

較好 一般 較差

幾個特殊情況的複雜度

1.並列迴圈的複雜度分析

將各個巢狀迴圈的時間複雜度相加

例如:

for (i=1; i<=n; i++)

x++;

for (i=1; i<=n; i++)

for (j=1; j<=n; j++)

x++;

解: 第乙個for迴圈

t(n) = n

f(n) = n

時間複雜度為ο(n)

第二個for迴圈

t(n) = n2

f(n) = n2

時間複雜度為ο(n2)

整個演算法的時間複雜度為ο(n+n2) = ο(n2)。

⒉函式呼叫的複雜度分析

例如:

public void printsum(int count){

int sum = 1;

for(int i= 0; i

大O表示法和時間複雜度

學資料結構和演算法的目的 實現程式的高速執行,那麼必然要了解複雜度。複雜度分為兩個維度 時間 空間。在開發過程中,我們希望時間和記憶體消耗都越少越好,但很多時候無法做到兼顧,需要在時間和空間之間做出取捨已達到最佳狀態。對複雜度的計算一般採用事前分析估算的方法,即大o表示法。接下來讓我們進入複雜度的學...

大O法時間複雜度計算

困惑的點 log,如何計算得出?上限 用來表示該演算法可能有的最高增長率。大o表示法 如果某種演算法的增長率上限 最差情況下 是f n 那麼說這種演算法 在o f n 中 n為輸入規模。上限的精確定義 對非負函式t n 若存在兩個正常數c和n0,對任意n n0,有t n t n 表示演算法的實際執行...

大O演算法複雜度表示

序言 演算法的時間複雜度和空間複雜度都是用 大o表示法 來表示的。其中o是個常量。常見的排序演算法的時間複雜度 氣泡排序 插入排序 希爾排序 選擇排序的時間複雜度是o n 2 快速排序的時間複雜度是o n log n 空間複雜度 氣泡排序 插入排序 希爾排序 選擇排序的空間複雜度是o 1 快速排序的...