最近發現了個好東西,就是一個學算法的好東西,是網易公開課的一個視頻。
這是麻省理工學院的公開課,有中英字幕,感謝網易。。
也可以在App把視頻緩存下來之后再放到電腦上面看,因為我這樣可以倍速,畢竟每集幾乎一個多小時。
回到標題,就是突然頓悟了一樣,就知道時間復雜度大概是怎么算的了。
因為在學校上課的時候沒聽明白,太官方了,而且課下也沒鑽研時間復雜度這個事,所以一直雲里霧里的。
時間復雜度是指漸進式的,是看輸入規模的。
我也明白一些基本的,比如什么常數階,什么去掉低階項,保留最高項,所以平時也勉勉強強的概括出來。
不多說了,直接看看二分查找的。
我們都知道二分查找在最壞的情況下依次是n/2,n/4,n/8。。。。 一直到1為止,這就有點慘了。
然后,意思就是要循環多少次才能查找到目標數呢,我們假設是x次。
然后我們可以觀察到分母是每次都乘以1/2,分子不變,所以可以根據題意列出下面等式:
n(1/2)x = 1
也就是
然后運算一下
最后就是
對數函數的底數省略掉,所以也就是
嘖嘖,這么簡單的東西現在才認真看,服了我自己。。