2021-05-05

python 每天一个算法题(二分法查找)

1.二分法的实质:二分法用于从一个有序的列表中查询目标元素,采取的方式是---取列表中间值做基础进行比较,如果目标值target_number 与中间值相等,则找到对应的值的位置,如果目标值与中间值不等>>>则比较中间值与目标值的大小,如果目标值大于中间值,则将中间值赋给新列表的起始值,如果目标值小于中间值,则执行相反的操作,一直到取到最终值为止,如果循环结束,没有找到,则返回一个信息告知

import time
import random

#首先生成一个列表,并对列表进行排序

list1 = [random.randint(1,10000) for x in range(1,1000)]

def search_targrt_number(list,target_number):#定义函数,传入一个列表及目标值
    list1.sort()#调用sort进行排序
    i = 0  #用于统计循环多少次后找到目标元素
    lower = 0
    high  = len(array)-1

    while lower <= high:
        i+=1
        midle = (lower+high)//2
        if midel < target_number:
            lower = midle+1
        elif midel > target_number:
            high = midle - 1
        else:
            return midle,i
    return -1

search_targrt_number(list1,302)
    
    
    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值