顺序查找的小问题

liulili19830401 2009-03-29 05:59:23
顺序查找算法;

int Seqsearch(Sealist R,int n ,int k)
{
int i;
for(i = 0;i < n && r[i].key != k; i++);
if(i >= n)
return -1;
else
return 1;
}

如果K值不在表中,则要进行n+1次比较之后才能确定查找失败!!
我怎么感觉查找n次就可以确定是不是失败啊????
...全文
112 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Paradin 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xiaoQ008 的回复:]
好像 書上使用r[0]當監視哨
所以比了0---n個吧
共n+1個吧
[/Quote]
up
xiaoQ008 2009-03-29
  • 打赏
  • 举报
回复
好像 書上使用r[0]當監視哨
所以比了0---n個吧
共n+1個吧
zhaochuanbiao 2009-03-29
  • 打赏
  • 举报
回复
在失败的情况下,对i的比较是n+1次,对k的比较是n次。i<n&&r[i].key != k中,如果如果i<n不成立,则不执行r[i].key != k!!
liqiong593664937 2009-03-29
  • 打赏
  • 举报
回复
最多循环n次
iamu_87 2009-03-29
  • 打赏
  • 举报
回复
int Seqsearch(Sealist R,int n ,int k)
{
int i;
for(i = 0;i < n; i++)
{
if(r[i].key == k)
return 1;
}
return -1;
}
为什么不这样呢?这不是n次吗
dongpy 2009-03-29
  • 打赏
  • 举报
回复
for(i = 0;i < n && r[i].key != k; i++);
这个循环最多执行n次。
liliangbao 2009-03-29
  • 打赏
  • 举报
回复
for(i = 0;i < n && r[i].key != k; i++);


这里最坏的情况,i会从0到n,有n+1
但是只循环n次。
正解!
  • 打赏
  • 举报
回复
for(i = 0;i < n && r[i].key != k; i++);


这里最坏的情况,i会从0到n,有n+1
但是只循环n次。
ljmscsq 2009-03-29
  • 打赏
  • 举报
回复
比较就是n次
ltc_mouse 2009-03-29
  • 打赏
  • 举报
回复
对K的比较,确实是最多n次
对i的比较,失败的情况是n+1次(i从0变成n了)
mengde007 2009-03-29
  • 打赏
  • 举报
回复
恩、

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧