我有一系列已排序的数字:
pts = [ 0, 4, 25, 51, 72, 100 ]
给定值T,我需要找到数组中第一个数字的索引大于T.
if T = 2, then the correct index is 1 for value 4
愚蠢的解决方案
我可以通过线性搜索来完成此操作,但希望进行优化。
无效解决方案
二进制搜索算法示例找到完全数字的索引..
是否有建议的技术来解决此类搜索问题?谢谢!
答案 0 :(得分:2)
二进制搜索算法查找t
,list[t] <= T
和list[t+1] > T
(或t+1
长于列表的长度)
答案 1 :(得分:0)
二进制搜索算法通常会找到完全匹配,但算法很简单,您应该很容易修改它以找到大于给定数字的第一个数字。您是否正在寻找解决方案的特定语言?
答案 2 :(得分:0)
二进制搜索将适用于此。
通常,实现将返回一个负数,以告诉您插入点。例如,在Java中,只有-1-n
并且您有自己的位置。