二分查找法详解,解析二分查找法

作者最近突然想到了二分查找法,今天进拿出来跟大家分享一下

二分查找法顾名思义就是把列表分成两份进行查找,即先定义个最小下标start=0和一个最大下标end = len(list),然后通过相加对2求余或者除以2在转换为int类型转换为整数,这个随心而定,即center=(start+end)//2或者center=int((start+end)/2)然后得到list[center]的值,判断它与你要查找的数的大小,如果你查找的数比他大则start=center + 1再进行上一步操作,直到找到list[center] = key(你要超找的数),输出结果center即可

 

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。 
此方法适用于不经常变动而查找频繁的有序列表。
二分法 时间复杂度lgn

代码实现:

二分查找法详解,解析二分查找法_第1张图片

代码详解:

def twosplit(key, list):
    list.sort()       因为要求的环境必须为有序列表,所以要对列表进行排序
    start = 0          定义最小下标为0
    end = len(list) - 1       定义最大下标为整个列表长度减1
    if key in list:      判断查找的值是否在列表中,不在这立即返回列表中无此元素
        while True:           while死循环,直到找到目标值
            center = int((end + start) / 2)      判断中间下标
            if list[center] == key:              判断中间下标在列表中的值是否是目标值,如果是则立即返回center的值
                return '您所查找的数{}的下标是{}'.format(key, center)
            elif list[center] < key:   判断目标值是否大于中间值,大于的话说明目标值在后半部分,如果大于则start=cent                                             
                start = center + 1                 如果大于则start=center+1
            else:                              如果目标值小于中间值,则目标值在前半部分
                end = center - 1                  所以end=center-1
    return '您查找的数不存在' 

二分查找法比较简单,时间复杂度低,非常适合快速查找

如果今天的分享对你有帮助记得点个赞哦!!!

你可能感兴趣的:(python基础,Python,数据分析)