顺序查找中哨兵的作用
len为数组长度
没用哨兵的时候判断需要进行len这么多次,同时还要比较i与len同样len这么多次
int search(int * a,int k,int len)
{
for(int i = 0; i <len ; i++)
{
if (a[i]==k)
return i;
}
return -1;//返回-1查找失败
}
使用哨兵后只需要判断len这么多次,而不需要进行i与len比较len这么多次,当数组非常大的时候会减少很大的运算
int search(int * a,int k,int len)
{
if(a[0]!=k)
a[0]=k;//定义哨兵
else
return 0;
int i=len;
while(a[i-1]!=k)//无论怎样都会一个元素与之匹配,避免了检查是否越界
{
i--;
}
return i;//如果返回值为 1则代表查找失败
}