线性搜索未返回正确的索引
Linear search is not returning the right index
我的线性搜索总是返回 -1
,我不知道为什么。我试着弄清楚但没有成功。搜索功能每次都转到 "else" 分支并且 "then" 永远不会执行。
#include <stdio.h>
#include <stdlib.h>
#define size 50000
int search(int n,int s,int v[s])
{
int i;
for(i=0;i<s;++i)
{
if(v[i]==n)
return i;
else
return -1;
}
}
int main(void)
{
int valores[size];
//start the vector and put values in it.
for(int i=0;i<size;++i)
valores[i]=(i+1)*2;
//search the 50000 values
for(int i=1;i<=size +1;++i)
{
int p=search(2*i,size,valores);
if(p==-1)
printf("Not found %d\n",i);
else if(valores[p]!=2*i)
printf("Found %d in wrong index: %d\n",i,p);
}
return 0;
}
您总是在第一个索引 0 之后离开搜索功能;
因为在 0 时它要么与 return i 相同,要么与 return -1.
相同
我假设它确实 return 0,而不是 -1,如果你给 n
作为 v[0]
。
以这种方式更改:
for(i=0;i<s;++i)
{
if(v[i]==n)
return i;
}
return -1;
您会收到您在评论 ("control reaches end of non-void function") 中提到的警告,因为函数的最后没有 return
。它当然是无法访问的,但警告可能是发现问题的提示。
我的线性搜索总是返回 -1
,我不知道为什么。我试着弄清楚但没有成功。搜索功能每次都转到 "else" 分支并且 "then" 永远不会执行。
#include <stdio.h>
#include <stdlib.h>
#define size 50000
int search(int n,int s,int v[s])
{
int i;
for(i=0;i<s;++i)
{
if(v[i]==n)
return i;
else
return -1;
}
}
int main(void)
{
int valores[size];
//start the vector and put values in it.
for(int i=0;i<size;++i)
valores[i]=(i+1)*2;
//search the 50000 values
for(int i=1;i<=size +1;++i)
{
int p=search(2*i,size,valores);
if(p==-1)
printf("Not found %d\n",i);
else if(valores[p]!=2*i)
printf("Found %d in wrong index: %d\n",i,p);
}
return 0;
}
您总是在第一个索引 0 之后离开搜索功能;
因为在 0 时它要么与 return i 相同,要么与 return -1.
相同
我假设它确实 return 0,而不是 -1,如果你给 n
作为 v[0]
。
以这种方式更改:
for(i=0;i<s;++i)
{
if(v[i]==n)
return i;
}
return -1;
您会收到您在评论 ("control reaches end of non-void function") 中提到的警告,因为函数的最后没有 return
。它当然是无法访问的,但警告可能是发现问题的提示。