binary_search 二分查找
1.在列表中获取中间位置的值
2.将中间值和所需要查找的值做对比, 如果相等则返回中间值的位置
3.如果中间值小于所需要查找的值, 则将查找范围缩小到 left 至 mid-1 (即right 修改为 mid-1)
4.如果中间值大于所需要查找的值, 则将查找范围修改为 mid+1 至 right (即left 修改为 mid+1)
注: 该算法 永远只查找 中间值是否等于查找值, 无法找到第一个出现 或者最后一个出现的位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import numpy as np a = list (np.random.randint(low = 0 ,high = 10 ,size = 10 )) # sort a.sort() print (a) # a = [0, 2, 2, 3, 4, 7, 7, 7, 8, 9] a = [ 0 , 3 , 3 , 4 , 4 , 5 , 6 , 8 , 9 , 9 ] def search_b(num): # set left and right left = 0 right = len (a) - 1 while left < right: # print("left:%d, right:%d"%(left, right)) # set mid mid = (right + left) / / 2 # print("mid:%d"%(mid)) # print(a[mid]) if a[mid] = = num: print ( "The Number:%d is located %d th in list" % (num, mid)) break elif a[mid] < num: left = mid + 1 # print("mid < num left:%d;right%d"%(left, right)) else : right = mid - 1 # print("mid > num left:%d;right%d"%(left, right)) return - 1 print (search_b( 3 )) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人