日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 二分法调试代码,Python实现二分法

發布時間:2024/7/23 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 二分法调试代码,Python实现二分法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python實現二分查找

為什么需要二分查找如果查找1-100內任意一個數字?順序查找(簡單查找)從1開始或者100倒著來進行查找

最快只需要一次,但是最慢則需要一百次,差距相當大

大O表示法為 O(n)

二分查找每次從中間進行查找,先從50,再判斷大還是小,再從75或者25進行查找,依次類推

由于每次都會排除一般的數字,所以最慢也只需要7次,log2 n次

大O表示法為O(log n)

要求:必須是有序的情況

從上面的例子可以看出來,在有序的情況下,二分查找的效率是很高的

大O表示法

大O表示法是一種比較特殊的表示法,指出了算法的消耗時間速度,主要可以表示兩種算法之間時間消耗的不同增速小明要準備去北京玩,為了更好的準備,小明提前準備了100套線路方案,然后準備用程序驗證那種方案更加方便省時間,如果使用簡單查找的話進行驗證,假設一套方案需要一秒鐘,那么100套就需要100毫秒(O(n),而使用二分查找的話只需要7毫秒(O(log n),這就整整差了十多倍的時間,這僅僅只是100套,如果是一億套方案呢,簡單查找時間就會更久, 由此我們可以根據大O表示法比較兩個算法直接的時間增量速度以此判斷哪個算法更加便捷

python代碼實現二分查找def?BinarySearch(list1,?num):

min?=?0???????????????#?最小的下標

max?=?len(list1)?-?1??#?最大的下標

i?=?0

while?True:

i?+=?1

mid?=?(max?+?min)?//?2?#?中間的下標每次向下取整

if?num?>?list1[mid]?:

min?=?mid?+?1??#?小于需要的猜的數,則將最小下標變為中間的,又因為中間的已經猜過,所以要加1

elif?num?==?list1[mid]?:

print("找到數據")

print("一共查找%d次"%i)????????????break

else?:

max?=?mid?-?1??#?大于需要的猜的數,則將最大下標變為中間的,又因為中間的已經猜過,所以要減1

if?__name__?==?"__main__":

list1?=?[i?for?i?in?range(0,100)]

num?=?5

BinarySearch(list1,?num)

作者:python_LiuYi

鏈接:https://www.jianshu.com/p/af69c01375ce

總結

以上是生活随笔為你收集整理的python 二分法调试代码,Python实现二分法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。