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

两大查找(顺序、二分查找)----Python版

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

两大查找(顺序、二分查找)----Python版

基本概念
      查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的全过程.列表查找:又叫线性查找:从列表中查找指定元素。输入:列表、待查找元素。输出:元素下标(为找到元素时一般返回None或),或者是返回查找的元素等等。内置列表查找函数:index()  [这是线性查找]
顺序查找(Linear Search)

 顺序查找:也叫线性查找,从列表第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止.(顺序查找相当于for循环查找)顺序查找的时间复杂度是O(n)

顺序查找代码如下: 

"""
作者:佩大奇
日期:2022/03/05/
描述:这是顺序查找,相当于for循环查找
"""

def linear(li,val):
    for index ,value in enumerate(li):
        #!这里的enumerate是python的内置函数,在字典上是枚举、列举的意思,相当于一个黑箱子,装下列表等等,
        #!用户可以通过for循环定义变量属于这个盒子,通过遍历盒子查找值
        if val==value:
            return index
    return -1

print("请输入列表中的元素,用空格隔开,回车结束:")
li=list(input().split())#键盘输入列表元素,回车结束
for i in range(len(li)):#列表元素转换成int类型
    li[i]=int(li[i])
print("列表li为:")
print(li)

print(linear(li,5))#调用函数查找元素
二分查找(Binary Search)

二分查找:也叫折半查找,从有序列表的初始候选去 li [0:n]开始,通过对待查找的值于候选区中间值的比较,可以使候选去减少一半。 二分查找的时间复杂度是O(logn)注意:二分查找的前提是列表是有序列表,否则在查找时会查找失败!

二分查找代码如下:

"""
作者:佩大奇
日期:2022/03/05/
描述:这是二分查找,二分查找的要求是列表必须为有序列表,设置left和right,其中left和right是列表的下标,每一次查找都是折半查找,
     mid=(left+right)/2,要查找的值value大于li[mid]时,说明mid左边是候选区,所以right=mid-1,当value小于li[mid]时,
     说明右边时候选区,所以left=mid+1,当left大于right时,说明查找失败,列表中不存在查找元素。
"""

def binary(li,value):
    left=-1;
    right=len(li)
    while left<=right:
        mid=(left+right)/2
        #或者时  mid=(left+right)//2,这也是取整的办法
        mid=int(mid)
        if li[mid]==value:
            print("查找成功,要查找元素的下标为:")
            print(mid)#因为mid时下标,所以只能时整数,这里用向上取整的方法,e.g:1.5转换为整数就是1,如果时向下取整,那么1.5转换为整数就是2
            print("要查找的元素为:")
            print(li[mid])
            break
        if li[mid]>value:
            right=mid-1
            continue
        if li[mid] 

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

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

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