簡體   English   中英

Python二進制搜索(最大迭代次數)

[英]Python Binary Search (Maximum number of iterations)

我在python中搜索二進制搜索,我發現了這個: http//openbookproject.net/thinkcs/python/english3e/list_algorithms.html

它說最大的一般關系。 迭代次數(與Probe right相同?)和N(list的大小)由N = 2^k -1 ,其中k是最大迭代次數。

但是從我的理解來看,一般關系不應該是N = 2^k
每次搜索之后,我們將列表除以2,直到達到1。

因此,最大迭代次數是log2 N而不是log2 (N+1)

我用谷歌搜索了這個,我發現一個網站支持我的答案,但沒有太多解釋。 (鏈接到這里: http//codingexplained.com/coding/theory/binary-search-algorithm

有人可以解釋它背后的數學嗎? 謝謝。

P(n)n元素所需的探針數。 然后我們可以寫下面的等式:

P(0) = 0
P(n) = 1 + P((n-1)/2)

說明:首先我們沒有元素 - 無所事事。 然后我們進行1次探測,我們留下了(n-1)/2元素(因為我們剛檢查它們,所以我們扔了1個)所以我們需要做更多的P((n-1)/2)

來自該等式的P(n)的結果將是floor(lg(n+1)) 你可以在一些例子(如n = 6和n = 7)上檢查它,或者你可以閱讀如何解決遞歸方程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM