我最近遇到了一個搜索排序列表中的數字的算法,這是怎麼回事:這個搜索算法叫什麼?
鑑於:甲骨文告訴你,如果一個給定的數字大於或小於正在搜索的數字。
從列表中的第一個元素開始。提前跳過1個元素,然後詢問oracle是否超出了要搜索的數字。
如果不是,請跳過2個元素並詢問oracle是否已經太過分了。
如果沒有跳過4個元素提前,等等....
當你找到了導致您正在搜索的傳過來的號碼,你可以確定包含被搜索的數子區間的第一跳。
最後,在子區間上執行二進制搜索。
我想知道這個算法是怎麼調用的,以便我可以對它做更多的研究。
感謝
我可以問爲什麼你會這樣做?在我看來,發現的子區間有50%的可能性只是列表的後半部分,因此可以在二分搜索的一個步驟中找到。 –
[本文](https://sites.google.com/site/d7013e11/announcements/exponentialbinarysearch)將其稱爲_exponential二進制搜索_。 – hammar
@ImreKerr一個非常好的問題,我可以想象只有一種情況,二進制搜索不適用/更好:當物品數量無限或未知時間。 – delnan