// 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就是陣列的長度。但是經常有時是,不需要將所有...