Python实现二分法查找

#二分查找

def search_val(data_list, val):
    left = 0
    right = len(data_list) - 1
    while left <= right:
        mid = (left + right) // 2
        if data_list[mid] == val:
            return mid
        elif data_list[mid] > val:
            right = mid - 1
        else:
            left = mid + 1
    return -1

data_list = [1, 2, 3, 5, 6, 7, 8, 9, 12, 34, 45, 56, 66]
val = 3

print(search_val(data_list, val))
时间: 2024-08-10 21:11:43

Python实现二分法查找的相关文章

python 实现二分法查找

二分查找图 二叉树: 代码 #!/usr/bin/python #-*-coding:utf-8-*- #---------------------------------------------------------------------------------------- # to_do : binary find # authors: zuoxingyu # time : 2014-06-07 #--------------------------------------------

python递归函数及二分法查找

函数的递归: 在一个函数的内部调用自己 死循环: 可以无限循环,不会停止 while True: print('我不是递归') 递归: 不是死循环,有最大循环深度 def story(): print('我是递归') story() story() 超过了递归的最大深度报错 RecursionError: maximum recursion depth exceeded while calling a Python object 官网上 源码中设置的递归深度: 1000自己实际测试递归深度: 9

python的算法:二分法查找(1)

1.什么是二分法查找: 1.从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束: 2.如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较. 3.如果在某一步骤数组为空,则代表找不到. 每次都是i减半查找,其时间消耗为O(logn) 最简单的一个循环算法就是: def binary_search_loop(lst,value): low,high=0,len(value)-1 while low<=high: mid=

python使用二分法实现在一个有序列表中查找指定的元素

二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2... 例如需要查找有序list里面的某个关键字key的位置,那么首先确认list的中位数mid,下面分为三种情况: 如果 list[mid] < key,说明key 在中位数的 右边: 如果 list[mid] > key,说明key 在中位数的 左边: 如果 list[mid] = key,说明key 在中位数的中间: 范围每次缩小一半,写个while的死循环知道找到为止. 二分法查找非常快且非常常用,但

Python 二分法查找

使用二分法查找前提必须是有序的数列 def search(list,val): start = 0 end = len(list)-1 #判断该数在不在列表中 if val in list: #循环直到找到该数,return退出函数 while 1: mid = int((start + end)/2) #取整数部分 if list[mid] == val: print('你要查找的数的下标为:%s,'%mid) return mid elif list[mid] > val: end = mi

python一个关于二分法查找元素的实现

# coding=utf-8import time def find_ele(alist, ele): if ele < alist[0] or ele > alist[len(alist) - 1]: print("%d not in alist" % ele) return last_index = len(alist) - 1 center_index = last_index // 2 loop_flag = True loop_cout = 0 while loo

python之路---14 递归 二分法查找

三十二.递归 1.函数自己调用自己 2.官方说明最大深度1000,但跑不到1000,要看解释器, 实测998 3.使?递归来遍历各种树形结构 三十三.    二分法查找 掐头结尾取中间 ,  必须是有序序列 1. 2. 3. 4. 原文地址:https://www.cnblogs.com/amirky/p/10211564.html

利用python实现二分法

利用python实现二分法:我的实现思路如下 1.判断要查找的值是否大于最大值,如果大于则直接返回False 2.判断要查找的值是否小于最小值,如果小于则直接返回False 3.如果要查找的值在最大值和最小值之间,则进入循环 a.首先序列的长度要大于1,然后获取序列中间一个值的大小 b.然后和要查找的值做比较,如果相等,则直接返回True,如果不相等,则判断如果中间的值大于要查找的值,则说明要查找的值在该中间值的左边,如果中间的值小于要查找的值,则说明要查找的值在中间的值的右边 c.最后如果序列

python实现二分查找

二分法查找:在一组有序的数据中进行查找,首先与中间的数先比较,如果查找的数大于中间的数,则要查找的数在前半段,否则在后半段,这样就会排除一半的数据,如此递归进行下去,则会极大的提高查找的速度.下面利用python代码实现二分查找 def binary_search(array,key): low = 0 high = len(array) - 1 while low < high: mid = int((low + high)/2) if key < array[mid]: high = mi