時間複雜度分析 最好 最壞 均攤

2021-09-27 02:56:55 字數 1237 閱讀 2321

// array: 陣列. n: array長度. x: 需要查詢的值

int searchposition(int array, int n, int x)

} return pos;

}

根據上面的演算法來說的話,如果我x的位置在array[0].那麼時間複雜度就是o(1).

如果x的位置在array[n - 1]或者不在array中.那麼時間複雜度就位o(n).

平均複雜度的話我們可以把平均值給加上去.這個需要考慮各種情況發生的概率.(ps.需要使用加權平均數)

我們假設,x在array中與x不在array中的概率都為1/2

t(n) = (1 / 2) / n + (2 / 2) / n + … + (n / 2) / n + 1 / 2 * n == > (3n + 1) / 4

即平均時間複雜度為o(n).

當**在不同情況下複雜度出現了量級的差別,則用所有情況下的加權平均數表示

// array 表示乙個長度為 n 的陣列

// **中的 array.length 就等於 n

int array = new int[n];

int count = 0;

void insert(int val)

array[0] = sum;

count = 1;

} array[count] = val;

++count;

}

當陣列放不下的時候才遍歷陣列求和,清空陣列後將sum放入index為0的位置.然後接下來插入新資料.如果放得下就直接插入資料.

最好的情況下:o(1)

最壞的情況下:o(n)

平均時間複雜度:o(1)

均攤時間複雜度分析:這個演算法裡頭只有n的時候時間複雜度是o(n),前面的時間複雜度都是o(1).將n的情況均攤到前面所有的情況下的話,均攤的時間複雜度就是o(1).

1.**在絕大數情況下是低級別複雜度,在極少情況下是高階別複雜度.2.低級別和高階別複雜度出現有時許規律

最好 最壞 平均 均攤時間複雜度

1 最好情況時間複雜度就是,在最理想的情況下,執行這段 的時間複雜度 如在乙個陣列中,查詢變數 x 出現的位置,陣列第乙個值是變數x 2 最壞情況時間複雜度就是,在最糟糕的情況下,執行這段 的時間複雜度 如在乙個陣列中,查詢變數 x 出現的位置,陣列最後乙個值是變數x 3 最好情況時間複雜度和最壞情...

演算法複雜度分析 最好 最壞 平均 均攤

public int function int n,int x return sum 1.最壞時間複雜度當x n時,時間複雜度為o n 2.最壞時間複雜度 當x 1時,時間複雜度為o 1 3.平均時間複雜度 要查詢的變數 x 在陣列中的位置,有 n 1 種情況 在陣列的 0 n 1 位置中和不在陣列...

最好,最壞,平均時間複雜度分析

例子1public static intfind int array,int n,int x return pos 分析例子1的時間複雜度 例1的主要實現在for迴圈中的array i 上。他的時間複雜度就是來自for迴圈 所以他的時間複雜度就是o n n就是陣列的長度。但是經常有時是,不需要將所有...