Python 二分查找算法

一、解释

二分法:可以理解为折半查找法,每一次都是基于上一次的折半查找

二、实例

l = [1,2,5,7,10,31,44,47,56,99,102,130,240]
#l为查找的列表
#num要查找的数
def binary_search(l,num):
    print(l) #[10, 31]
    if len(l) > 1:
        mid_index=len(l)//2 #1
        if num > l[mid_index]:
            #in the right
            l=l[mid_index:] #l=[31]
            binary_search(l,num)
        elif num < l[mid_index]:
            #in the left
            l=l[:mid_index]
            binary_search(l,num)
        else:
            print(‘find it‘)
    else:
        if l[0] == num:
            print(‘find it‘)
        else:
            print(‘not exist‘)
        return

binary_search(l,32)
 
时间: 2024-10-11 14:10:35

Python 二分查找算法的相关文章

两种方法实现Python二分查找算法

一. arr=[1,3,6,9,10,20,30] def findnumber(l,h,number): mid=(l+h)//2 if arr[mid]==number: print("找到了"+str(mid)) elif arr[mid]<number: l = mid return findnumber(mid+1,h,number) elif arr[mid]>number: h = mid return findnumber(0,mid-1,number) e

python函数:递归函数及二分查找算法

本文和大家分享的主要是python的递归函数及二分查找算法相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.递归的定义 def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? """ print(s) story() story() 老和尚讲故事 递归的定义 -- 在一个函数里再调用这个函数本身.这种魔性的使用函数的方式就叫做 递归 . 递归的最大深度:997 1.python递归最大层

Python 实现二分查找算法

最近在学习python,由于在面试中,二分查找算法面试率极高,所以使用python做了一个实现. def search1(sequence, number): lower = 0 upper = len(sequence) - 1 while lower <= upper: mid = (lower + upper) // 2 if number > sequence[mid]: lower = mid + 1 elif number < sequence[mid]: upper = m

二分查找算法的Python实现

问题 二分查找 list.index()无法应对大规模数据的查询,需要用其它方法解决,这里谈的就是二分查找 思路说明 在查找方面,python中有list.index()的方法.例如: >>> a=[2,4,1,9,3] #list可以是无序,也可以是有序 >>> a.index(4) #找到后返回该值在list中的位置 1 >>> a.index(5) #如果没有该值,则报错 Traceback (most recent call last): Fi

Python——递归、二分查找算法

递归函数 1. 递归 (1)什么是递归:在函数中调用自身函数(2)最大递归深度:默认997/998--是Python从内存角度出发做的限制 n = 0 def story(): global n n+= 1 print(n) story() #997/998 story() (3)修改最大深度:最好不要改--递归次数太多,则不适合用递归解决问题 import sys sys.setrecursionlimit(2000) #1997/1998 2. 递归的优点 会让代码变简单 3. 递归的缺点

python之路——二分查找算法

楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你说,so easy! l.index(66)... 我们之所以用index方法可以找到,是因为python帮我们实现了查找方法.如果,index方法不给你用了...你还能找到这个66么? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,

python--递归、二分查找算法

递归 初识递归 递归的定义--在一个函数里再调用这个函数本身 现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 刚刚我们就已经写了一个最简单的递归函数. 递归的最大深度--997 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制

自学Python3.6-算法 二分查找算法

自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Python3.6-算法 二分查找算法 .... 原文地址:https://www.cnblogs.com/yaoyaojcy/p/10596912.html

二分查找算法的 JavaScript 实现

二分查找在查找[指定值]在[有序]数据中的[位置]时是一种高效的算法. 以下仅提供 ES5 版本. var arr = [0, 2, 4, 27, 28, 54, 67, 74, 75, 79, 86, 97, 289, 290, 678] function binarySearch(arr, val) { var start = 0, end = arr.length - 1; while (start <= end) { var mid = Math.floor((start + end)