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))
相关推荐
free-elcmacom2 分钟前
机器学习进阶<8>PCA主成分分析
人工智能·python·机器学习·pca
star _chen10 分钟前
C++ std::move()详解:从小白到高手
开发语言·c++
lzhdim15 分钟前
C#开发者必知的100个黑科技(前50)!从主构造函数到源生成器全面掌握
开发语言·科技·c#
福尔摩斯张15 分钟前
C++核心特性精讲:从C语言痛点出发,掌握现代C++编程精髓(超详细)
java·linux·c语言·数据结构·c++·驱动开发·算法
刺客xs24 分钟前
Qt----事件简述
开发语言·qt
程序员-King.27 分钟前
【Qt开源项目】— ModbusScope-进度规划
开发语言·qt
syt_101335 分钟前
Object.defineProperty和Proxy实现拦截的区别
开发语言·前端·javascript
liu****36 分钟前
Python 基础语法(二):程序流程控制
开发语言·python·python基础
charlie11451419137 分钟前
如何快速在 VS2026 上使用 C++ 模块 — 完整上手指南
开发语言·c++·笔记·学习·现代c++
时空无限40 分钟前
Java Buildpack Reference
java·开发语言