gpt4 book ai didi

c - 具有不同参数的非常相似的binarySearch 实现同样可以正常工作。为什么?

转载 作者:行者123 更新时间:2023-11-30 15:16:00 25 4
gpt4 key购买 nike

我试图为一个大学项目制作自己的二分搜索功能,并想出了这个:

int bSearch(int data[], int dim, int num)
{
if(dim == 0)
return 0;
if(num == data[(dim-1)/2])
return 1;
if(num < data[(dim-1)/2])
return bSearch(data,(dim-1)/2 - 1, num);
if(num > data[(dim-1)/2])
return bSearch(data + ((dim-1)/2) + 1, dim - (dim-1)/2 - 1 , num);
}

我的一个 friend 想出了几乎相同的函数,但无论我把 (dim-1)/2 放在哪里,他都会写 dim/2,看起来两者都一样工作得同样好,我在尝试一些示例时想出了 (dim-1)/2 并且似乎有效。

为什么这种差异(不)重要?

最佳答案

唯一的区别在于它如何将表分成两部分以查看它位于哪个部分。

传统上,您会将其分成两半,但您可以将其分为 10% 和 90%,看看它在哪个部分,它也可以工作,只是不是最佳选择。

在您的示例中,如果您有一个包含 10 个数字的列表,它会检查第 4 个数字,看看它是否是该数字,如果不是,它会查看它是否小于第 4 个数字,如果不是,则它' d 检查一下是否更大。你的 friend 也会做同样的事情,但以第五号为引用点。两者都可以,但对于大表来说,他的速度可能会稍快一些。

关于c - 具有不同参数的非常相似的binarySearch 实现同样可以正常工作。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33292168/

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