Python二分查找/折半查找算法详解--(面试常考)
https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關(guān)注!
歡迎關(guān)注微信公眾號(hào):寶藏女孩的成長日記
如有轉(zhuǎn)載,請(qǐng)注明出處(如不注明,盜者必究)
??二分查找也稱折半查找(Binary Search),這種搜索算法每一次比較都使搜索范圍縮小一半,是一種效率較高的查找方法。
概念
??是一種在有序數(shù)組中查找某一特定元素的查詢算法。搜索過程從數(shù)組的中間元素開始,如果中間元素與要查找的元素相等,則搜索過程結(jié)束;如果查找元素大于或小于中間元素,則在數(shù)組大于或小于中間元素的那一半中進(jìn)行查找,而且跟開始一樣從中間元素開始比較。重復(fù)以上過程,直到找到滿足條件的元素,使查找成功,或直到數(shù)組為空為止,此時(shí)查找不成功。
要求
??必須采用順序存儲(chǔ)結(jié)構(gòu),且按關(guān)鍵字大小進(jìn)行有序排列。
代碼舉例
#coding=utf-8# 二分查找 (遞歸) # 返回 x 在 lists 中的索引,如果不存在返回None def binarySearch(lists, left, right, x):# 如果右邊的值大于左邊的值if right >= left:# 取左右兩個(gè)數(shù)的中間值mid = (left + (right - left) // 2)# 若目標(biāo)元素正好是中間位置,就返回mid,搜索過程結(jié)束if lists[mid] == x:return mid# 元素小于中間位置的元素,比較左邊的元素,且移動(dòng)right下標(biāo)elif lists[mid] > x:return binarySearch(lists, left, mid - 1, x)# 元素大于中間位置的元素,比較右邊的元素,移動(dòng)left下標(biāo)else:return binarySearch(lists, mid + 1, right, x)else:# 不存在的目標(biāo)元素的情況就返回Nonereturn# 測試舉例數(shù)組 arr = [1, 2, 3, 4, 5] x = 6# 函數(shù)調(diào)用 result = binarySearch(arr, 0, len(arr) - 1, x)if result != None:print("您輸入的元素在數(shù)組中的索引為 %d" % result) else:print("您輸入的元素不在數(shù)組中")運(yùn)行結(jié)果:
當(dāng)x=3時(shí);
運(yùn)行結(jié)果
https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關(guān)注!
歡迎關(guān)注微信公眾號(hào):寶藏女孩的成長日記
如有轉(zhuǎn)載,請(qǐng)注明出處(如不注明,盜者必究)
總結(jié)
以上是生活随笔為你收集整理的Python二分查找/折半查找算法详解--(面试常考)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git版本控制总结
- 下一篇: 创建数据库python: can‘t o