在排序的数组中找到与n最接近的值,而不是经过

时间:2012-03-01 20:13:34

标签: arrays binary-search

对于这个问题,我有一个已排序的双精度数组。我需要能够快速有效地找到最接近但不超过n的值的索引。效率是关键,赋值状态可以在O(log n)中完成,因此我假设它可以通过某种修改的二进制搜索来完成。

我知道之前已经问过这个问题,但是我发现所有答案都假设是一个未排序的数组,或者只是通过整个数组循环比较差异。

感谢任何指导。谢谢。

1 个答案:

答案 0 :(得分:2)

是的,您可以使用修改后的二进制搜索来完成;只是像往常一样寻找数字;

  • 如果你找到它,那就是正确的数字(关闭,但不是结束)
  • 如果你找不到,如果你检查的最后一个号码在哪,那就是你的号码(你已经看过上面的号码,发现它太高了)
  • 如果你找到它并且你检查的最后一个号码已经结束,我想你会得到如何找到最高号码。

请记住,还有一些错误条件需要考虑,你会做得很好:)