我想实现一个二进制搜索功能,我想知道如何修改新的数组与新的最小值/最大值。另外我是C++的新手,所以任何人都可以告诉我这是否是二进制搜索的正确实现?谢谢。我怎样才能创建新的数组与修改的最大/最小值为这个二进制搜索功能
#include <iostream>
using namespace std;
bool doSearch(int arr, int target)
{
int min = 0;
int max = arr.length() - 1;
while(min != max)
{
int avg = (min + max)/2;
if(arr[avg] < taget){
min = avg + 1
}
else if(arr[avg] > target){
max = avg - 1;
else if (arr[avg] == target)
{
return avg;
}
}
}
return -1;
}
int main()
{
int primes[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,61,67,71,73,79,83};
int result = doSearch(primes , 47);
cout<<"Found prime at index " <<result;
}
格式化您的代码。几行中没有分号。 – arsho
我认为你应该让你的代码先编译,然后修复实现,一旦你有一些你可以迭代的结果。对于初学者来说,C++不支持切分原始数组类型,所以你不能做类似'arr [min:max]'的事情。也许看看'std :: array'类,它提供了你正在尝试使用的一些功能。 – avigil