1. 程式人生 > >二分搜尋的時間複雜度O(logN)如何得到

二分搜尋的時間複雜度O(logN)如何得到

轉自:http://yixiong89921.blog.163.com/blog/static/132537788201122105228637/

學過資料結構,當然當年也學過演算法的時間複雜度的,不知道當年是不是會推倒時間複雜度,大概也就是根據基本語句的執行次數來獲得最高的數量級吧

例如

i=0;

while(i<n){i++};//這條語句執行了N次

i=0;

j=0;

while(i<n)

{ while(j<n)

    {

         j++;//這條語句執行了n^2次

    }i++;j=0;

總共執行次數應該是n+n2次,但時間複雜度只關係最高次,這才是真正影響程式效率的地方,所以時間複雜度是O(n

2)

下面進入正題,其實二分法的時間複雜度推導是十分簡單的,只怪我腦袋短路了,送給腦袋跟我一樣短路的人吧

二分法的關鍵思想是 假設該陣列的長度是N那麼二分後是N/2,再二分後是N/4……直到二分到1結束(當然這是屬於最壞的情況了,即每次找到的那個中點數都不是我們要找的),那麼二分的次數就是基本語句執行的次數,於是我們可以設次數為x,N*(1/2)^x=1;則x=logn,底數是2,