二分法分析

成為大牛發表於2020-10-05

在這裡插入圖片描述
在這裡插入圖片描述
時間複雜度:最好情況下,一擊命中,為常數級時間C;最壞情況下,一直二分到剩一個元素,則時間複雜度為log2N

空間複雜度:最好情況下,一擊命中,不用後續遞迴,即不用佔用呼叫函式時函式棧的空間,此時空間複雜度為 C

                  最壞情況下,一直遞迴二分,需要二分log2N次,即呼叫函式log2N次,此時空間複雜度為C * log2N

時間複雜度計算(看執行次數最多的那條語句被執行了多少次)

O ( 2 n ) O(2^n) O(2n),表示一個演算法的效能會隨著輸入資料的每次增加而增大兩倍,典型的方法就是裴波那契數列的遞迴計算實現
對數階 O ( l o g n ) O(logn) O(logn)
int i = 1;
while(i<n)
{
i = i * 2;
}
上面的程式碼,在while迴圈裡面,每次都將 i 乘以 2,乘完之後,i 距離 n 就越來越近了,直到i不小於n退出。我們試著求解一下,假設迴圈次數為x,也就是說 2 的 x 次方等於 n,則由2^x=n得出x=log₂n。因此這個程式碼的時間複雜度為 O ( l o g n ) O(logn) O(logn)

https://www.cnblogs.com/lazyegg/p/12572421.html

相關文章