算法學習:我終於明白二分查找的時間復雜度為什么是O(logn)了


 最近發現了個好東西,就是一個學算法的好東西,是網易公開課的一個視頻。

直通車

這是麻省理工學院的公開課,有中英字幕,感謝網易。。

也可以在App把視頻緩存下來之后再放到電腦上面看,因為我這樣可以倍速,畢竟每集幾乎一個多小時。

 

回到標題,就是突然頓悟了一樣,就知道時間復雜度大概是怎么算的了。

因為在學校上課的時候沒聽明白,太官方了,而且課下也沒鑽研時間復雜度這個事,所以一直雲里霧里的。

時間復雜度是指漸進式的,是看輸入規模的。

我也明白一些基本的,比如什么常數階,什么去掉低階項,保留最高項,所以平時也勉勉強強的概括出來。

 

不多說了,直接看看二分查找的。

 

我們都知道二分查找在最壞的情況下依次是n/2,n/4,n/8。。。。 一直到1為止,這就有點慘了。

 

然后,意思就是要循環多少次才能查找到目標數呢,我們假設是x次。

然后我們可以觀察到分母是每次都乘以1/2,分子不變,所以可以根據題意列出下面等式:

n(1/2)x = 1

也就是

 

然后運算一下

 

最后就是

 

 對數函數的底數省略掉,所以也就是

 

嘖嘖,這么簡單的東西現在才認真看,服了我自己。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM