博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
折半查找
阅读量:4982 次
发布时间:2019-06-12

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

首先将给定值key与表中中间位置元素的关键字比较,若相等,则查找成功,返回该元素的存储位置,若不等,则所需查找的元素只可能在中间元素以外的前半部分或后半部分中,然后在缩小的范围内继续进行同样的查找。
 
  1. int Binary_Search(SeqList L, ElemType key)
  2. {
  3. //在有序表L中查找关键字为key的元素,若存在则返回其位置,不存在则返回-1
  4. int low=0, high=L.TableLen-1, mid;
  5. while(low<=high)
  6. {
  7. mid=(low+high)/2;//取中间位置
  8. if(L.elem[mid]==key)
  9. return mid;//查找成功则返回其所在位置
  10. else if(L.elem[mid]>key)
  11. high=mid-1;//从前半部分继续查找
  12. else
  13. low=mid+1;//从后半部分继续查找
  14. }
  15. return -1;
  16. }
时间复杂度:O(log2n)

转载于:https://www.cnblogs.com/zhuzhenfeng/p/bff58b8f4487e3d5819232659bb114a0.html

你可能感兴趣的文章
C# 代理/委托 Delegate
查看>>
笨方法学python--参数,解包,变量
查看>>
android 加载本地图片与网络图片
查看>>
易经读书笔记17 泽雷随
查看>>
oracle正则表达式函数 匹配
查看>>
jmeter --自动化badboy脚本开发技术
查看>>
Linux驱动:LCD驱动测试
查看>>
Mark Down 尝试
查看>>
第三节:使用Log4net和过滤器记录异常信息,返回异常给前端
查看>>
fedora的选择
查看>>
AlphaPose论文笔记《RMPE: Regional Multi-person Pose Estimation》
查看>>
模糊查询和聚合函数
查看>>
[批处理]批量将文件名更名为其上级目录名
查看>>
如何查找ORACLE中的跟踪文件
查看>>
SQL Server将一列的多行内容拼接成一行
查看>>
Spring Controller RequestMapping
查看>>
socket
查看>>
小程序 跳转问题 (来源见注明)
查看>>
JBPM4入门——9.自动节点单线执行
查看>>
//停止关联的进程
查看>>