请你用C ++中的这个简单代码帮助我,我不知道这里有什么问题?
#include <iostream>
#include <string>
using namespace::std;
template <class Type>
Type binsearch (Type item,Type *table,Type n)
{
int bot=0;
int top=n-1;
int mid, cmp;
while (bot<= top)
{
mid=(bot+top)/2;
if(item==table(mid))
return (mid);
else if (item <table[mid])
top=mid-1;
else
bot=mid+1;
}
return -1;
}
int main ()
{
int nums[]={10, 12, 30, 38, 52, 100};
cout<< binsearch(52, nums, 6);
}
答案 0 :(得分:1)
table(mid)
应该是table[mid]
答案 1 :(得分:1)
必须如此
if(item==table[mid])
不
if(item==table(mid))
答案 2 :(得分:1)
问题是您混淆了[
和(
。而不是
---
mid=(bot+top)/2;
if(item==table(mid))
return (mid);
---
你需要
+++
mid=(bot+top)/2;
if(item==table[mid])
return (mid);
+++
答案 3 :(得分:0)
if(item==table(mid))
应该是
if(item==table[mid]) //notice square brackets []
^ ^