关于哨兵顺序查找的疑问

int Sequential_Search2(int *a ,int n,int key)
{
    int i=0;
    a[0]=key;//哨兵
    i=n;
    while(a[i]!=key)
    {
        i--;
    }
    return i;//返回0就是查找失败
}

返回0就认为没有这个元素。

可是如果数组的第一个元素恰好就是key,返回0就认为没有这个元素,这样不合理吧。

阅读 4.8k
1 个回答

第一次循环的时候是a[n],所以应该是a[1..n] 而不是 a[0..n-1] 所以算法是对的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进