gpt4 book ai didi

c - 利用二分查找算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:28 25 4
gpt4 key购买 nike

与代码本身相比,我对思维过程更感兴趣。我应该找到排序数组中 v[i] 组件的数量,这样 x < v[i] < y,其中 xy 作为键盘输入发送。我应该使用修改后的二进制搜索而不是通过 vector 进行常规搜索来有效地解决这个问题。

我的问题是我无法想象在这种情况下如何实现二分查找,这个方法似乎不适合我。

有什么想法吗?

最佳答案

您可以在数组中对 xy 进行二进制搜索。然后,您可以从 y 的索引中减去 x 的索引,以获得它们之间的项目数。

您实际上必须从该结果中减去 1,因为您使用的是严格小于。

例如,假设您有一个数组:

[3, 6, 8, 10, 14, 39, 41, 100]

设 x=8,y=39。

x的索引为2,y的索引为5。

5-2 = 3

3-1 = 2

如果允许 xy 是数组中不包含的值,您仍然可以采用相同的方法。搜索 x,如果没有找到,则使用刚好大于 x 的元素的索引。对于小于 y 的元素的索引也是如此。

关于c - 利用二分查找算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26789333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com