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