好吧,当列表排序时,您感兴趣的所有条目都是 连续的 。这意味着您需要查找与找到的项目相同的第一项,并从二进制搜索生成的索引中向后看。和关于最后一项相同。
您可以简单地从找到的索引后退,但是如果有很多项目等于找到的项,则这种方法的求解速度可能与O(n)一样慢。因此,您最好使用 指数搜索
:当您找到更多相等项时,将跳转次数增加一倍。这样,您的整个搜索仍然是O(log n)。

好吧,当列表排序时,您感兴趣的所有条目都是 连续的 。这意味着您需要查找与找到的项目相同的第一项,并从二进制搜索生成的索引中向后看。和关于最后一项相同。
您可以简单地从找到的索引后退,但是如果有很多项目等于找到的项,则这种方法的求解速度可能与O(n)一样慢。因此,您最好使用 指数搜索
:当您找到更多相等项时,将跳转次数增加一倍。这样,您的整个搜索仍然是O(log n)。