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

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

所谓搜索就是在序列当中查找某一元素,这就叫做搜索,但是如果我们没有学习算法的知识的话,使用传统的查找方式就是从第一个元素到最后一个元素,除了传统的查抄方式之外,还有一个就是有个算法-------二分查找

二分查找就像我们查字典一样,先把字典分成两个部分,假如说我查找p字母,我将字典分成两半后看到的字母是M,因为字典是按顺序排列的,所以p字母是在m字母的后面,然后,我在将m字母后面的一半再分成两个部分,再看我当前页是否在p字母的前半部分还是右半部分,或者说正好就是p字母,按照这个思路在进行依次向下分。

这样查找方式可以提高我们一半的效率。

二分查找优点是比较次数少,查找速度快,平均性能好,其缺点是要求查找是有序表且插入删除困难·,因此,二分查找方法适用于不经常变动而查找频繁的有序数列。

二分查找的缺点也是二分查找要满足以下条件,也就是就是我们的数列必须是按照顺序排列的

 

二分查找可以分两种方式进行书写,一种是递归方式,另一种是非递归方式。

python的递归方式:

ef binary_search(alist,item):     n = len(alist)   #计算alist的长度     if n>0:         mid = n//2         if item == alist[mid]:             return True         elif item

python非递归方式:

#非递归方式 def binary_search(alist,item):     n =  len(alist)     first = 0     last = n-1     while first <= last:         mid = (first+last) // 2         if item == alist[mid]:             return True         elif item < alist[mid]:             last = mid -1         else:             first = mid+1     return False if __name__ == "__main__":     li = [17,20,26,31,44,54,55,77,93]     print(binary_search(li,55))

 

posted on
2018-10-26 08:57  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/white-the-Alan/p/9854384.html

你可能感兴趣的文章
设计模式学习笔记——Prototype原型模式
查看>>
pom.xml里有红叉报错的解决办法
查看>>
Perl last和next的用法区别
查看>>
Selenium 管理 Cookies
查看>>
exceptionfunction[LeetCode]Permutations
查看>>
Linux(2)_常用命令2
查看>>
自定义分页
查看>>
[转]DELPHI——调试(1)
查看>>
JS秒数转成分秒时间格式
查看>>
xp_cmdshell 命令的开启与关闭,和状态查询
查看>>
Linux sudoers
查看>>
MySQL详解(18)-----------分页方法总结
查看>>
bzoj 4595 激光发生器
查看>>
multi cookie & read bug
查看>>
js时间转换
查看>>
(转载) Android Studio你不知道的调试技巧
查看>>
队列实现霍夫曼树
查看>>
JAVA 笔记(一)
查看>>
{Nodejs} request URL 中文乱码
查看>>
异常及日志使用与项目打包
查看>>