python实现二分搜索binary_search
python实现二分搜索binary_search
条件:给定一个升序列表,返回target值的下标,没有则返回-1
def binary_search(data, target):target_index = -1start_index = 0end_index = len(data) - 1while True:middle_index = (end_index + start_index) // 2middle_value = data[middle_index]length = end_index + 1 - start_indexprint(f"middle_index: {middle_index}, middle_value: {middle_value}, length: {length}")if target == middle_value:target_index = middle_indexbreak# 在右侧elif target > middle_value:start_index = middle_index + 1# 在左侧else:end_index = middle_index - 1# 终止循环条件 ,当每次对分 对分到最后还没找到if not length:breakreturn target_indexif __name__ == '__main__':a = [1, 2, 3, 5, 8, 9, 10, 12, 14, 15, 16]t_index = binary_search(a, 2)print(t_index)
python实现二分搜索binary_search相关推荐
- java python算法_用Java,Python和C ++示例解释的搜索算法
java python算法 什么是搜索算法? (What is a Search Algorithm?) This kind of algorithm looks at the problem of ...
- python中算法定义_python算法
引言 定义:算法就是按照一定步骤解决问题的办法 属性: 正确:就是可以正确的求解问题 快速:就是时间复杂度要尽量小 有穷性:要在有限个步骤解决问题 渐进分析法为什么可以做到与算法运行硬件环境无关? 算 ...
- 算法与数据结构的python概述
引子 问题一:1+2+3+4+5+-+10000=? 第一种解法: 1+2=3,3+3=6,6+4=10,10+5=15- 这是要算到猴年马月的节奏呀 果断弃之 第二种解法: 聪明的高斯,这样玩: ( ...
- 最新算法校招编程-剑指offer、Leetcode常考题目及解法分享
本资源整理了BAT.TMD等互联网算法岗校招面试过程中常考的LeetCode和剑指offer编程题:此外,还整理了部分百度.腾讯.阿里.今日头条相关的面试经验,对于正准备校招面试的同学非常值得参考复习 ...
- 算法导论第三版 第2章习题答案
2020/10/27: 增加伪代码相应的Python实现代码. 2020/11/13:修订第2节第3题的bug. 参考文献:https://ita.skanev.com/ 2 Getting Star ...
- 查找算法——二分查找【代码实现】
伪代码 递归 // initially called with low = 0, high = N-1BinarySearch(A[0..N-1], value, low, high) {// inv ...
- [FreeCodeCamp笔记] Python 数据结构和算法1 二分搜索 Binary Search
我以前学过数据结构和算法(data structure and algorithms. 现在普遍简称DSA),当时用的Robert Sedgewick的coursera课程.这位大神写的<算法( ...
- 笨办法学 Python · 续 练习 21:二分搜索
练习 21:二分搜索 原文:Exercise 21: Binary Search 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 二分搜索算法是一个简单方法,在已排序的元素列表中 ...
- python实现二分查找_数据结构和算法:Python实现二分查找(Binary_search)
在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...
- 递归实现二分搜索(python)
既然你已经知道了应该如何来实现递归函数,现在就可以回过头再去看看我们的二分搜索了.回忆一下,这个算法的基本思想是查看中间值,然后通过递归来搜索列表的下半部分或上半部分. 递归的基本情况是我们可以停止递 ...
最新文章
- Flask-RESTful之视图
- android application 引起内存泄漏的原因
- 个人副业在家可做大学生首选小程序创业项目
- Java学习笔记十(注解)
- AVFoundation和 GPUImage初探
- 西电与中科大计算机专业哪个好,中国最好的5所“科技大学”,中科大第二,你的母校排第几?...
- pycharm同时注释多行代码快捷键
- Educational Codeforces Round 41(已补D,E)
- python网络运维案例代码库_OLDboy-python第八期运维教程
- 【Node.js学习笔记五】npm(Node包管理器)命令行选项
- Mysql show status详解
- 第十三 关于JavaScript
- java对话框进度条_java进度条
- Ubuntu 16 安装qq教程
- js 复制div文本
- 电力系统服务器是什么,什么是电网调度?
- CMS采集插件-CMS自动采集插件免费
- 《设计模式:可复用面向对象软件的基础》——引言(笔记)
- SAP基底数据仓库实战项目(序章)
- 11个销售心理学方法,帮你搞定客户!