文章目录

  • 一. 二分查找
  • 二. 代码实现一:使用递归
  • 三. 代码实现二:非递归

一. 二分查找


二. 代码实现一:使用递归

def binary_search(alist, item):"""二分查找:使用递归"""n = len(alist)if n > 0:mid = n // 2if alist[mid] == item:return Trueelif item < alist[mid]:return binary_search(alist[:mid],item)else:return binary_search(alist[mid+1:],item)return Falseif __name__ == '__main__':li = [17,20,26,31,44,54,55,77,93]print(binary_search(li,55))print(binary_search(li,100))

三. 代码实现二:非递归

def binary_search_2(alist,item):"""二分查找:非递归"""n = len(alist)first = 0last = n-1while first <= last:mid = (first + last)//2if alist[mid] == item:return Trueelif item < alist[mid]:last = mid-1else:first = mid + 1return Falseif __name__ == '__main__':li = [17,20,26,31,44,54,55,77,93]print(binary_search_2(li,55))print(binary_search_2(li,100))

数据结构与算法--6.二分查找相关推荐

  1. 数据结构与算法:二分查找

    二分查找是搜索算法中的一种,用来搜索有序数组 二分查找: 是一种简单算法,其输入是一个有序的元素列表(必须有序的原因稍后解释).如果要 查找的元素包含在列表中,二分查找返回其位置:否则返回null. ...

  2. 【数据结构与算法】二分查找

    一.什么是二分查找? 二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0. 二.时间复杂度分析? 1.时间复杂度 ...

  3. vue 怎么样不重复往数组里插入数据_前端数据结构与算法(1) -二分查找vs二叉树...

    今天给大家开始介绍前端方面的数据结构,刚把vue源码过完就开始数据结构,可见它的地位有多重要.有人说我一前端又不是后端学这个数据结构干嘛,好吧,只能说你还没有这个意识,一是面试很多大厂就会考察,我面试 ...

  4. 数据结构与算法《二分查找》

    数据结构与算法(java)<二分查找> 基本二分查找public class BinarySearch {/*** 1.定义一个有序数组,* 2.定义两个变量i,j* 3.定义一个待查找的 ...

  5. 【python】数据结构与算法之二分查找

    一.查找 在一组数据中找某一个特定项的算法过程 通常用来判断某个特定项是否在一组数据中,最终返回True或False 常用的查找算法:顺序查找.二分查找.树表查找.哈希查找等 二.二分查找 二分查找又 ...

  6. python数据结构与算法:二分查找

    二分查找:python 实现 def binary_seaech(alist,item):"""二分查找 递归实现"""n = len(al ...

  7. 常考数据结构与算法-NC105 二分查找-II

    描述 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存 ...

  8. 数据结构与算法之二分查找法

    public static void main(String[] args) {         //目标数组         int[] arr = new int[] {1,2,3,4,5,6,7 ...

  9. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

最新文章

  1. 架构师之路 — 业务架构 — Overview
  2. 一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
  3. 为什么linux自带python_为什么一些linux自带python,而不是C,C++,java等其他编程语言?...
  4. Java中继承thread类与实现Runnable接口的区别
  5. springboot接收json参数_Springboot + Vue + shiro 实现前后端分离、权限控制
  6. 计算机支持协同工作不是多媒体应用,计算机支持的协同工作概观.PDF
  7. php mysql删除失败_php+MySQL实战案例【七】数据编辑、删除
  8. Notepad++在线安装使用JSON插件
  9. Must-read papers on deep learning to hash
  10. php文件上传sha1,PHP中sha1_file与md5_file哪个更快?
  11. bzoj2661: [BeiJing wc2012]连连看
  12. 兼容性极好的圆角边框
  13. Day14 字符编码
  14. Windows 系统的默认字体是什么?应用的默认字体是什么?
  15. android 耗电分析工具,使用Battery Historian工具分析Android耗电分析
  16. selenium+Python 刷视频视频播放量
  17. 一卡难求,什么时候才能买到原价显卡?
  18. RTKLIB中RTK定位原理(一)
  19. 四年级计算机期末质量分析,四年级数学期末试卷质量分析
  20. js室内地图开发_使用JS+Three.js+Echart开发商场室内地图客流信息统计功能

热门文章

  1. STL源码剖析 multiset 和 multimap
  2. VS2008+OpenCL环境配置
  3. OpenCL memory object 之 Global memory (2)
  4. C++ 标准库 vector list map使用方法
  5. 程序员犯的非技术错误(Top 5)
  6. 如何和何时使用 CSS 的权重设置 !important (建议:永不使用!)
  7. ItelliJ IDEA开发工具使用—创建一个web项目
  8. sql 查询结果为null替换 为 0
  9. 2018.12.18运算符,分支结构(循环),异常处理,函数
  10. Vim高级使用 - CentOS下使用VIM打造C/C++开发环境