python信息找人的算法_算法篇-python查找算法
上一篇的遞歸算法中,了解到算法的復(fù)雜度。遞歸就是在函數(shù)中調(diào)用本身。
在漢諾塔游戲例子中,如果你需要移動(dòng)的盤子很多時(shí),程序運(yùn)行就會(huì)消耗很長(zhǎng)時(shí)間來計(jì)算結(jié)果。可以回顧下 —>算法篇-python遞歸算法
用遞歸打印斐波那契數(shù)列,你會(huì)發(fā)現(xiàn),即使n只有幾十的時(shí)候,你的計(jì)算機(jī)內(nèi)存使用量已經(jīng)飆升了。
可以結(jié)合 生成器 優(yōu)化下程序,不管n有多大,都不會(huì)出現(xiàn)卡頓。
有一點(diǎn),關(guān)于遞歸次數(shù),python中有個(gè)限制,可以通過sys模塊來解決。
python 查找算法
查找就是根據(jù)給定的某個(gè)值,在查找表中確定一個(gè)關(guān)鍵字等于給定值的數(shù)據(jù)元素。
知道了查找的定義,試著用一個(gè)簡(jiǎn)單的例子,能想到 for 循環(huán)么?
有沒有發(fā)現(xiàn),是不是兩兩比較就能找到啦。假設(shè)列表中有很多元素,再用 for 循環(huán)來查找,得到結(jié)果的時(shí)間會(huì)不會(huì)更長(zhǎng)。
算法的復(fù)雜度是漸進(jìn)的,即對(duì)于一個(gè)大小為n的輸入,如果它的運(yùn)算時(shí)間為n3+5n+9,那么它的漸進(jìn)時(shí)間復(fù)雜度是n3
剛剛用的 for 循環(huán) 來查找,它的時(shí)間復(fù)雜度O(n)
有沒有繼續(xù)優(yōu)化的查找算法呢?
可以設(shè)想下,在列表中元素能一半一半的查找,再來查找目標(biāo)值,是不是就會(huì)快一些。
接著就是~
二分查找
上面說到,一半一半的查找,看目標(biāo)值在左邊一半還是右邊一半,然后替換左端點(diǎn)或者右端點(diǎn),繼續(xù)判斷。
直接上例子啦
總結(jié)
以上是生活随笔為你收集整理的python信息找人的算法_算法篇-python查找算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蜂鸣器驱动电路
- 下一篇: put请求方式参数如何传_TP5请求(r