python 二分查找

1.二分查找首先被查找的序列是一个有序的。

2.明确序列的左右边界

3.找出序列中间的元素,判断如果是要查找的元素,返回元素

4.如果中间元素,大于或者小于查找的元素,那么改变左右边间,直到中间的数等于查找的元素。

python 复制代码
def Two_selecter(find_num,nums):
    #划定左右边界下标
    left,right = 0,len(nums)-1
    while left <= right:
        #计算出折半值的下标
        pivot = left + (right - left) // 2
        #如果相等,就找到了,返回值
        if nums[pivot] == find_num:
            return nums[pivot]
        #如果小于中间值,中间值的下标退一位,变成右边界
        if find_num < nums[pivot]:
            right = pivot - 1
        #如果中间值小于查找值,中间值+1,变成左边界
        else:
            left = pivot + 1
    return None

a = [1,2,3,4,5,6,7,8,9,10]
print(Two_selecter(2,a))
相关推荐
我的golang之路果然有问题13 小时前
mac配置 unity+vscode的坑
开发语言·笔记·vscode·macos·unity·游戏引擎
铅笔小新z13 小时前
【C++】从理论到实践:类和对象完全指南(上)
开发语言·c++
rainFFrain13 小时前
qt显示类控件---QCalendarWidget
开发语言·qt
kyle~13 小时前
算法---贪心算法(Greedy Algorithm)
算法·贪心算法
fashion 道格13 小时前
C 语言数组拼接:从基础实现到细节优化
算法
蓁蓁啊14 小时前
ARM交叉编译中编译与链接参数不一致导致的问题
开发语言·arm开发·嵌入式硬件
go_bai14 小时前
Linux-线程
linux·开发语言·c++·经验分享·笔记
咖啡の猫14 小时前
Python中的输出函数
开发语言·数据库·python
zzzsde14 小时前
【C++】二叉搜索树
开发语言·c++
头发还没掉光光14 小时前
Linux多线程之自旋锁与读写锁
linux·运维·算法