数据结构与算法----顺序查找(Python版)

一、顺序查找 Sequential Search
如果数据项保存在如列表这样的集合中, 我们会称这些数据项具有线性或者顺序关 系。
Python List 中,这些数据项的存储位 置称为 下标( index ,这些下标都是有 序的整数。
通过下标,我们就可以按照顺序来访问和 查找数据项,这种技术称为 顺序查找
要确定列表中是否存在需要查找的数据项
首先从列表的第 1 个数据项开始, 按照下标增长的顺序,逐个比对数据项, 如果到最后一个都未发现要查找的项,那么查找 失败。
1、顺序查找:无序表查找代码
 
def sequentialSearch(alist, item):
    pos = 0
    found = False

    while pos < len(alist) and not found:
        if alist[pos] == item:
            found = True
        else:
            pos = pos + 1

    return found

testList = [1,2,3,4,5,6,23,34,24,32]
print(sequentialSearch(testList,5))
print(sequentialSearch(testList,11))
数据项在列表中,比对的一般情形如何?
因为数据项在列表中各个位置出现的概率是相同 的;所以平均状况下,比对的次数是 n/2
所以,顺序查找的算法复杂度是O(n)
 
实际上,我们在第三章的有序表 Search 方法实现中介绍过顺序查找
当数据项存在时,比对过程与无序表完全相同 不同之处在于,如果数据项不存在,比对可以提 前结束
       • 如下图中查找数据项 50 ,当看到 54 时,可知道后面 不可能存在 50 ,可以提前退出查找
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值