栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

顺序查找与二分查找(python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

顺序查找与二分查找(python)

查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。

1. 顺序查找

顺序查找也称线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到最后一个元素为止。

代码如下:

def linear_search(li, val):
    for ind, v in enumerate(li):
        if v == val:
            return ind
    else:
        return None

时间复杂度为O(n)

2. 二分查找

二分查找又称折半查找,仅适用于有序的顺序表。

基本思想:首先将给定值key与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分。然后缩小的范围内继续进行同样的查找,如此重复,直到找到为止,或确定表中没有所需要查找的元素,则查找不成功,返回查找失败的信息。

def binary_search(li, val):
    left = 0
    right = len(li) - 1
    while left <= right:    # 候选区有值
        mid = (left + right) // 2
        if li[mid] == val:
            return mid
        elif li[mid] > val: # 带查找的值在mid左侧
            right = mid - 1
        else: # li[mid] < val 带查找的值在mid右侧
            left = mid + 1
    else:
        return None

时间复杂度为O(logn)

3. 补充

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

语法:enumerate(sequence, [start=0])

参数:

sequence – 一个序列、迭代器或其他支持迭代对象。start – 下标起始位置的值。

返回值:返回 enumerate(枚举) 对象。

示例代码如下所示:

li = ['one', 'two', 'three']
for i, element in enumerate(li):
	print i, element

得到结果如下:
0 one
1 two
2 three

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号