二分查找算法:簡(jiǎn)單的說,就是將一個(gè)列表先排序好,比如按照從小到大的順序排列好,當(dāng)給定一個(gè)數(shù)據(jù),比如3,查找3在列表中的位置時(shí),可以先找到列表中間的數(shù)li[middle]和3進(jìn)行比較,當(dāng)它比3小時(shí),那么3一定是在列表的右邊,反之,則3在列表的左邊,比如它比3小,則下次就可以只比較[middle+1,end]的數(shù),繼續(xù)使用二分法,將它一分為二,直到找到3這個(gè)數(shù)返回或者列表全部遍歷完成(3不在列表中)
優(yōu)點(diǎn):效率高,時(shí)間復(fù)雜度為O(logN);
缺點(diǎn):數(shù)據(jù)要是有序的,順序存儲(chǔ)。
li=[1,2,3,4,5,6,7,8,9,10]
defsearch(someone,li):
l=-1
h=len(li)
whilel+1!=h:
m=int((l+h)/2)
ifli[m] l=m else: h=m p=h ifp>=len(li)orli[p]!=someone: print("元素不存在") else: str="元素索引為%d"%p print(str) search(3,li)#元素索引為2 以上內(nèi)容為大家介紹了用Python實(shí)現(xiàn)一個(gè)二分查找的函數(shù),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。