博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法2(二分查找法)
阅读量:5156 次
发布时间:2019-06-13

本文共 1167 字,大约阅读时间需要 3 分钟。

使用二分查找法的前置条件

  必须是一个已经排好序的数组

二分查找定义

  从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。

示例图

循环版二分查找法

def bin_serach(data_set, val):    """    二分查找法    :param data_set:传入一个已经拍好序的数组    :param val: 目标值    :return: 数组中目标值的下标    """    low = 0    high = len(data_set) - 1    while low <= high:        mid = (low + high) // 2        if data_set[mid] == val:            return mid        elif data_set[mid] < val:            low = mid + 1        else:            high = mid - 1    return '无此值'ret = bin_serach([1, 2, 3, 4, 5, 6, 7], 11)print(ret)

递归版二分查找法

def bin_serach(data_set, val, low, high):    """    二分查找法    :param data_set: 传入一个已经拍好序的数组    :param val: 目标值    :param low: 列表最小下标    :param high: 列表最大下标    :return: 数组中目标值的下标    """    while low <= high:        mid = (low + high) // 2        if data_set[mid] == val:            return mid        elif data_set[mid] < val:            return bin_serach(data_set, val, mid + 1, high)        else:            return bin_serach(data_set, val, low, mid - 1)    return '无此值'data_set = [1, 2, 3, 4, 5, 6, 7]ret = bin_serach(data_set, 1, 0, len(data_set)-1)print(ret)

 

转载于:https://www.cnblogs.com/L5251/articles/9320591.html

你可能感兴趣的文章
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>