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

Python(14)查找算法

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

Python(14)查找算法

目录

1.顺序查找法

例题:在顺序表中查找特定数值。

例2:在列表中顺序查找最大值和最小值。

2.二分查找法

例3:二分查找法的递归实现。

例4:二分查找法的非递归实现

3.Python提供的查找算法。


1.顺序查找法

        查找算法是在程序设计中最常用到的算法。假定要从n个元素中查找x的值是否存在,从头到尾逐个查找,这种方法称为顺序查找法。

        顺序查找法有三种情况可能发生:在最好的情况下,第一项就是要找的数据结构,只有一次比较;在最差的情况下,需要n次比较,其全部比较完之后查不到数据;在平均情况下,比较次数为n/2次。算法的时间复杂度为O(n)。

例题:在顺序表中查找特定数值。
def sequentialSearch(alist,item):
    pos=0                     #初始位置
    found=False               #未找到数据对象
    #循环条件
    while pos 

例2:在列表中顺序查找最大值和最小值。
def max1(alist):
    pos=0
    iMax=alist[0]     #假设第一个值最大
    while posiMax:
            iMax=alist[pos]     #赋值
        pos=pos+1
    return iMax
def min1(alist):
    iMin=alist[0]
    for item in alist:
        if item2.二分查找法 

二分查找法又称折半查找法,用于预排序列表的查找方法。

        如果要在排序列表alist中查找元素t,首先将列表alist中间位置的项域查找关键字t比较,如果两者相等,则查找成功;否则利用中间项将列表分成前、后两个子表,如果中间位置项目大于t,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,即查找成功;或者直到子表不存在为止,即查找不成功。

        对于包含N个元素的表,其时间复杂度为O(log2^N)。

例3:二分查找法的递归实现。
def _binarySearch(key,a,lo,hi):
    if hi<=lo:return -1
    mid = (lo+hi)//2
    if a[mid]>key:                             #中间位置大于关键字
        return _binarySearch(key,a,lo,mid)     #递归查找中间位置的前面的子表
    elif a[mid] 

例4:二分查找法的非递归实现
def binarySearch(key,a):
    low = 0                                    #设置最小边界
    high = len(a) - 1                          #设置最大边界
    while low <= high:                         #左边界小于等于右边界,则循环
        mid = (low + high) // 2
        if a[mid]key:                       #中间位置大于查找值
            high=mid-1                         #调整最大边界
        else:
            return mid
    return -1
a=[1,13,26,33,45,55,68,72,83,99]
print(binarySearch(99,a))
print(binarySearch(2,a))

3.Python提供的查找算法。

Python提供了下列的查找算法:

(1)运算符in:“x in list”测试x是否存在于list中

(2)内置函数max()、min():查找列表中的最大值和最小值。

更方便的使用查找算法。

x=list(map(int,input().split()))
print(3 in x)
print(max(x),min(x))

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

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

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