C++ 从一系列值中查找最近边界的最快方法

C++ 从一系列值中查找最近边界的最快方法,c++,algorithm,sorting,C++,Algorithm,Sorting,假设我已经对预计算的浮动进行了排序: 1, 3, 10, 29 假设我的“输入”是7.3。我希望我的程序返回3和10,因为它们是数组中7.3之前和之后的数字 最快的方法是什么?我假设您可以使用二进制搜索在log(n)time中执行,但是否可以在常量时间中执行此操作?除非将输入限制为少量预定值,否则无法在常量时间中执行此操作。只需使用二进制搜索 二进制搜索的C++函数是(也有其他方法,但您需要下限值)除非您将输入限制为一小部分预定值,否则无法在固定时间内完成。只需使用二进制搜索 二进制搜索的C+

假设我已经对预计算的浮动进行了排序:

1, 3, 10, 29
假设我的“输入”是
7.3
。我希望我的程序返回3和10,因为它们是数组中7.3之前和之后的数字


最快的方法是什么?我假设您可以使用二进制搜索在
log(n)
time中执行,但是否可以在常量时间中执行此操作?

除非将输入限制为少量预定值,否则无法在常量时间中执行此操作。只需使用二进制搜索


二进制搜索的C++函数是(也有其他方法,但您需要

下限值

除非您将输入限制为一小部分预定值,否则无法在固定时间内完成。只需使用二进制搜索


二进制搜索的C++函数是(还有其他的,但是你想要

下限

我怀疑你能在固定时间内完成,但你可以在一定的假设下在log(log(n))中完成。二进制搜索可能是实现简便性方面的最佳选择。

我怀疑您能否在固定时间内完成它,但在某些假设下,您可以在log(log(n))中完成它。二进制搜索可能是实现简便性方面的最佳选择。

我认为不可能在固定时间内完成。有一种比log(n)稍微快一点的方法,但它要求输入具有均匀分布(在您的情况下这是不保证的)。我认为不可能在恒定时间内完成。有一种略快于log(n)的方法,但它要求输入具有均匀分布(在您的情况下不保证)。