最近我遇到了一种在有序列表中搜索数字的算法,它是这样进行的:
给定:一个告诉你一个给定数字大于还是小于正在搜索的数字的Oracle。
从列表中的第一个元素开始。跳过1个元素并询问oracle是否已经超过正在搜索的数字。
如果没有,请跳过2个元素并询问Oracle是否已经太远。
若不然,则跳过4个元素......
当你找到第一个导致你越过正在搜索的数字的跳过时,你可以确定包含正在搜索的数字的子间隔。
最后,在子间隔上执行二进制搜索。
我想知道这个算法叫什么名字,以便我能够做更多的研究。
谢谢
给定:一个告诉你一个给定数字大于还是小于正在搜索的数字的Oracle。
从列表中的第一个元素开始。跳过1个元素并询问oracle是否已经超过正在搜索的数字。
如果没有,请跳过2个元素并询问Oracle是否已经太远。
若不然,则跳过4个元素......
当你找到第一个导致你越过正在搜索的数字的跳过时,你可以确定包含正在搜索的数字的子间隔。
最后,在子间隔上执行二进制搜索。
我想知道这个算法叫什么名字,以便我能够做更多的研究。
谢谢