首先说一下二分法查找的思路。这是面向小白的课程,大佬请让步谢谢

给定一个有序的序列(必须是排好序的)例如[1,2,3,4,5,6,7,8,9,10,20,30,400],然后我们查询一个元素出现的坐标位置,默认是0开始。

比如我们查询20出现的位置。

首先,获取元素的总个数[1,2,3,4,5,6,7,8,9,10,20,30,400] ,13个元素,然后获取元素的首和尾的下标数 0和13

然后二分法查找,又叫折半查找,顾名思义就是一半一半的查找,那么我们就把上面的元素分成二份,如果出现小数则向下取整(math.foor的使用)(0+13)/2=6

所以我们确定了中间的坐标为6,好了 我们得到了两个区间[0,6] [7,13] 这是一个数组位置的区间,接下来我们就是分别来比较两个区间的。

首先比较左边部分。[01,2,3,4,5,6]=对应的元素是[1,2,3,4,5,6,7] 比较最大元素是否小于当前元素20 我们发现最大才7,7<20,所以我们舍弃这左边部分。

ok,下面就是右边部分了 [8,9,10,20,30,400],现在我们再对剩下的右半部分进行二分操作,得到二份数据[8,9,10]和[20,30,400]

同上操作舍弃左半部分继续操作右半部分,[20,30,400]得知 [20][30,40]好了 我们得到了最后的数字20.

比较的时候

左边比较最大数小于指定数字,右边比较最小数大于指定数字 ,文字太罗嗦看不懂看图吧

python 二分法查找思考理解小白向け的更多相关文章

  1. Python二分法查找及变种分析

    基于Python3 普通二分法查找目标值的index 二分法查找的思路很简单,先确定好列表nums的一头start一尾end,中间值middle根据头尾数值之和用地板除法除以2,即(start + e ...

  2. python 二分法查找实例(递归、循环)

    二分法,主要应用于有序序列中,原理是每次查找都将原序列折半,逐渐缩小查找范围的一种算法. 需求 要求在一个有序序列中,例如[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 ...

  3. python属性查找 深入理解(attribute lookup)

    在Python中,属性查找(attribute lookup)是比较复杂的,特别是涉及到描述符descriptor的时候. 在上一文章末尾,给出了一段代码,就涉及到descriptor与attribu ...

  4. python 二分法查找

    这个也是之前写的程序,现在把它贴上来 #!/usr/bin/python import os os.system('clear') def binsearch(seq,x,low,high): mid ...

  5. Python二分法查找

    1.1二分前提是有序,,否则不可以2分,2分查找的时间复杂度是O(log n):排序后二分查找到适当的位置插入数值 lst = [37,99,73,48,47,40,40,25,99,51] def ...

  6. python 二分法查找字典中指定项第一次出现的索引

    import time #引入time库,后续计算时间. inform_m = {} #创建母字典 inform_s = {} #母字典下嵌套的子字典 #给母字典添加键-值 for i in rang ...

  7. Python【day 14-3】二分法查找

    #二分法查找 #方法1 循环+左右边界变动,两者差减半 #方法2 递归+新列表长度减半 #方法3 递归+左右边界变动,两者差减半 #方法1 循环+左右边界变动,两者差减半 def recursion1 ...

  8. python 内置函数(二) 进阶函数 递归内容及二分法查找 知识点

    1,lambda:  匿名函数 2.sorgted()  排序函数 3,filter()   过滤函数 筛选 4,map()  映射函数 5.递归 6.二分法 一. 匿名函数: lambda lamb ...

  9. 查找算法:二分法查找及其python实现案例

    承接上一篇:查找:顺序查找与二分法查找,将二分法更多详细的python实现解题写下笔记. 简单方法 ''' 二分法查找在列表中的用户输入值,返回index 三种情况跳出循环体: LR相邻 LR位置重合 ...

随机推荐

  1. FTP使用心得

    1、创建文件夹的函数,一次只能创建一层。 2、没有现成的判断文件夹是否存在的函数,如果文件夹不存在就创建,会报异常。有以下封装好的函数。可以直接调用。 1 2 3 4 5 6 7 8 9 10 11 ...

  2. 剑指Offer - 九度1388 - 跳台阶

    剑指Offer - 九度1388 - 跳台阶2013-11-24 03:43 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包 ...

  3. USACO Section2.1 Hamming Codes 解题报告 【icedream61】

    hamming解题报告----------------------------------------------------------------------------------------- ...

  4. js学习日记-各种宽高总结(配图)

    1.窗口和浏览器 window.innerWidth.window.innerHeight   浏览器内部可用宽高 window.outerWidth.window.outerHeight   浏览器 ...

  5. SSH非交互式密码授权远程执行脚本

    公司有上百台服务器,需要为每台服务器都执行一个脚本,因为所有服务器的账号密码都是一样的,所以可以不用搭建ansible等自动化运维工具,我们直接通过SSH远程执行即可完成. 本文以三台服务器为例,系统 ...

  6. Python网络编程(epoll内核监听,多任务多进程)

    OJBK    接着昨天的说 select模块内的epoll函数还没说  说完epoll和本地套接字套接字基本就没了 今天主要是多进程   理论性东西比较多  主要是理解         epoll ...

  7. super和final关键字

    一.super关键字 super关键字的使用 JAVA类中使用super来引用父类的属性或者方法,用this来引用当前对象,主要用法: 1.子类的构造函数默认第一行会默认调用父类的无参数构造函数 2. ...

  8. 对于进程没杀死占用内存和cpu行为的方法

    在跑机器学习或者深度学习的过程中有可能遇到没杀死进程的情况,但是程序的入口又没关掉,尤其是我使用jupyter从远程Linux映射到windows浏览器跑程序的时候 对于上面的问题, 首先运行 hto ...

  9. 实用JS系列——BOM常用对象

    背景:  最近在着手项目的时候,意识到自己JS的欠缺.虽然看了不少JavaScript的视频,但真正项目中并不是经常遇到大且难的例子.所以JavaScript的基础还需要再打扎实,也就有了这一系列博客 ...

  10. axis2实践(二)Restful入门示例

    1. 实例说明 本示例直接参照了RESTful Web Services with Apache Axis2,本示例基本就是沿用的原示例,就是一个对学生信息(包括姓名,年龄,课程)的管理的例子,提供如 ...