顺序表的查找

最近学习情况:

忙忙忙忙忙~~

啊,手机游戏卸载,小说不看了之后,感觉自己萌萌哒,就是有点困哈哈哈

当然了,最近的学习没有落下,现阶段的数据结构敲简单(可能还没有到难的地方),区区一个查找而已,最多是今天学习的平衡二叉树和二叉排序树稍微难了一点点。

最近写了很多博客,涉及很多方面,我发现写博客真的很不错,特别是那种回顾过往知识,一边更深层次的学习,一边复习的过程,非常的有利于知识点之间的串联与融会贯通。

特别是以前有些不会的经过这一次的学习之后都会有所提高,有所进步。

像是数据结构这种以前学习过的知识点,现在再次学习就会忍不住思考以前是怎么想的,以前的想法跟现在比有什么需要提升的地方~

所以我要更加努力的写博客鸭!

记录我成长的点点滴滴~(偷偷为之自己的将近两百篇博客而自豪~)

顺序表的查找分为顺序查找跟二分查找。

顺序查找

顺序查找:即一个个的遍历的查找。

代码就是写一个for循环从1找到n没有找到返回-1找到了返回下标。

需要注意的点有

  1. 不要写着写着数组越界了
  2. 不要遍历到不该去的地方

顺序查找有个优化,就是设置一个哨兵。

哨兵的存在对时间复杂度没有任何的影响,但是会有效的防止越界的问题。

设置哨兵的顺序查找需要注意的地方:

  1. 最好是从后向前查找,找到下标0,一旦到达这理就说明没有找到
  2. 好处就是一定会返回一个下标,但只有非0的才有效
  3. 很好的避免了越界的行为

设置的方法就是将待查找的数值放到a[0]这个地方,从vnum开始向前查找。

二分查找

又称折半查找。

精髓在于一半区间一半区间的找,大大的缩小了时间复杂度(O(logn))。

折半查找形象的说,就像是找书的页码,不同的是,发现自己要的页码不再那个区间,就会将那半边的书撕掉,依次来缩小查找的范围。

二分查找需要注意的地方是

  1. 只能在顺序表中查找(因为需要下标)
  2. 数据必须有序!

二分查找的关键代码为:

while(l<=r)
{
    mid=(l+r)>>1;
    if(mid>x) look(l,mid-1,x);
    else look(mid+1,r,x);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值