一个运用二分查找算法的程序的时间复杂度是“对数级别”。二分查找是一种效率较高的查找方法,算法复杂度即是while循环的次数,时间复杂度可以表示“O(h)=O(log2n)”。

本教程操作环境:windows7系统、Dell G3电脑。

一个运用二分查找算法的程序的时间复杂度是“对数级别”。

相关推荐:《编程学习》

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

查找过程:

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

算法复杂度:

二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x.

时间复杂度即是while循环的次数。

总共有n个元素,

渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数

由于你n/2^k取整后>=1

即令n/2^k=1

可得k=log2n,(是以2为底,n的对数)

所以时间复杂度可以表示O(h)=O(log2n)

下面提供一段二分查找实现的伪代码:BinarySearch(max,min,des)

mid-

while(min<=max)

mid=(min+max)/2

if mid=des then

return mid

elseif mid >des then

max=mid-1

else

min=mid+1

return max

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果xa[n/2],则我们只要在数组a的右 半部继续搜索x。

想要查阅更多相关文章,请访问PHP中文网!!

php二分查找算法时间复杂度,一个运用二分查找算法的程序的时间复杂度是什么...相关推荐

  1. c语言backtrack算法6,一个关于数组回溯算法(backtrack)的通用模式

    今天在LeetCode看到一篇非常有价值的讨论,列举了一系列列数组的回溯算法的通用模式,自己动手一个个完成后,感觉对理解回溯算法的原理有很大帮助. 其实回溯就是按顺序的一种穷举,但是它会设定停止条件和 ...

  2. linux 多个文件内容查找,Linux 根据一个文件内容查找另一个文件中的内容

    有文本1.txt,内容如下: {"phone":"18633333333","code":"333333"} {&quo ...

  3. 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算

    对于排序算法而言,有几个重要的点: 理解此种排序算法是怎么运行的 理解算法的时间复杂度与空间复杂度计算 递推公式(关乎时间复杂度的计算) 递推公式主要为以下的形式(递归使用的复杂度也这么算): 具体推 ...

  4. 【算法】弗洛伊德(Floyd)算法

    这个算法主要要弄懂三个循环的顺序关系. 弗洛伊德(Floyd)算法过程: 1.用D[v][w]记录每一对顶点的最短距离. 2.依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否 ...

  5. java 二分搜索获得大于目标数的第一位_程序员常用查找算法(顺序、二分、插值、分块、斐波那契)...

    顺序查找 基本思想 属于线性查找和无序查找,从一端开始顺序扫描,直到找到与目标值value相等的元素. 这是最基本的查找方法,也是时间复杂度最高的查找算法. 在数据过多时,这种方法并不适用. 代码实现 ...

  6. LeetCode算法题4:二分查找及扩展应用

    文章目录 前言 一.二分查找 二.第一个错误的版本 三.搜索插入位置 总结 前言 Leetcode算法系列:https://leetcode-cn.com/study-plan/algorithms/ ...

  7. 对长度为200的有序表进行二分查找_程序员常用的查找算法(顺序、二分、插值、分块、斐波那契)...

    顺序查找 基本思想 属于线性查找和无序查找,从一端开始顺序扫描,直到找到与目标值value相等的元素. 这是最基本的查找方法,也是时间复杂度最高的查找算法. 在数据过多时,这种方法并不适用. 代码实现 ...

  8. python实现二分查找_数据结构和算法:Python实现二分查找(Binary_search)

    在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...

  9. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

最新文章

  1. 存在于实数域的微观粒子2-泡利不相容原理
  2. 机器学习(三)聚类深度讲解
  3. js内存泄漏常见的四种情况(From LeuisKen)
  4. 操作系统之常考面试题
  5. python---os
  6. xfce4环境下gdm3更换背景图片
  7. 企业一般用php还是js,网站开发用php还是js
  8. spring技术小结
  9. opencv在python环境下的安装_关于python环境下的opencv安装
  10. Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证
  11. mysql datetime设置now()无效,直接用程序设置默认值比较好
  12. 数据分析与机器学习之线性回归与逻辑回归(六)
  13. 利用STM32PWM占空比实现呼吸灯
  14. 数字IC设计verilog编写——6脉冲同步器
  15. 计算机图片怎么截图快捷键,电脑怎么截图,常见的截图快捷键
  16. ECMAScript标准命名
  17. 单片机点亮LCD1602A液晶屏
  18. 大白话之One Pixel Attack for Fooling Deep Neural Networks论文讲解
  19. 配置mysql数据库端口号_数据库配置时要注意端口号
  20. Vue实现web网页锁屏功能

热门文章

  1. LC和RC滤波电路分析
  2. python替代hadoop_Python连接Hadoop数据中遇到的各种坑(汇总)
  3. php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负
  4. 怎么用python编程前二n-1项的等差数列的和_python 等差数列末项计算方式
  5. Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...
  6. oracle无法分区,oracle已存在的表添加新分区的方法
  7. NameError: name 'long' is not defined
  8. LDAP命令介绍---dstune
  9. UVA340 ​​​​​​​Master-Mind Hints【数组】
  10. openlayers入门开发系列之图层控制