算法和数据结构——查找

##查找

  • 查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
  • 列表查找(线性表查找):从列表中查找指定元素  

            >输入:列表、待查找元素

            >输出:元素下标(未找到元素时一般返回None或-1)  

  • 内置列表查找函数:index()

##(一)顺序查找

  • 顺序查找:也叫线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到最后一个元素为止。
  • 时间复杂度:O(n)    
  • 代码
  • def linear_search(lt,val):
        for ind,v in enumerate(lt):
            if v == val:
                return ind
            else:
                return None
    print(linear_search([1,2,3,4,5,6,7,8,9],3))

    ps:enumerate()是python的内置函数
    enumerate在字典上是枚举、列举的意思
    对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引 index值value
    enumerate多用于在for循环中得到计数: for...in enumerate()                                                     

  ##(二)二分查找

  • 二分查找:又叫做折半查找,从有序列表的初始候选区lt[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。
  • 从一下列表查找3,如图:                                                                                                           
  • 时间复杂度:o(n)=logn
  • 代码                                                                                                                                             
    def bin_search(a_list,val):
        low=0
        high=len(a_list)-1
        while low <= high:
            mid=(low+high)//2
            if a_list[mid] == val:
                return mid
            elif a_list[mid] > val:
                high=mid-1
            else:
                low=mid+1
    print(bin_search([1,2,3,4,5,6,7,8,9],3))

    ##(三)顺序查找与二分查找的比较

  • 二分查找比线性查找的效率高,因为o(n)=logn<o(n)=n

  • 内置函数index(),只能用于顺序查找,二分查找必须先排序,才能进行查找。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值