【发布时间】:2016-06-08 18:15:01
【问题描述】:
#include<iostream>
using namespace std;
int BSearch(int array[],int key,int left,int right)
{
if(array[left+right/2]==key)
cout<<left+right/2;
else if(array[left+right/2]<key)
BSearch(array,key,left,right/2-1);
else
BSearch(array,key,right/2,right);
}
int main()
{
int list[]={1,2,3,4,5,6,7,8,9,11,15,21};
BSearch(list,5,0,sizeof(list)/sizeof(int)-1);
}
我编写了这个程序来执行二进制搜索。每次运行时都会遇到分段错误。
【问题讨论】:
-
必须加括号:
(left+right)/2 -
@HalilİbrahimOymacı 哦,您可能在我写答案时发表了评论。如果你愿意,我可以删除它,因为看起来你是第一个来的。
-
@gsamaras 没有必要。 :)
-
请发布真实代码。这甚至无法编译。
-
我的回答不完整。更新辛哈。
标签: c++ algorithm binary segmentation-fault binary-search