BinarySearch二分查找

二分思想


1. 二分的前置条件

  • 存储在数组中
  • 有序排列

2. 二分的思想

对于数组 [low] -> [high], 取 [mid] 位置数与需要查找的X进行比较;
如果X 较小,则在[low] -> [mid] 段继续查找;
否则在 [mid] -> [high]段查找,依次递归。
递归的出口:查到X或 mid = low / mid = high.

需要注意的问题


1. [mid] 取值问题

mid = (low + high) / 2 ;    // bad
mid = (high - low) >> 1 + low ;   //  good

在计算机中,移位操作是比较快的。 >> 右移,相当于除法,二进制右移1位相当于除以2,右移2位相当于除以4, << 左移,相当于乘法。
而 (low + high) / 2 需要考虑可能会存在溢出问题

2. 存在重复元素时,查找第一次或最后一次出现的位置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 13,010评论 0 7
  • 分治策略 本文包括分治的基本概念二分查找快速排序归并排序找出伪币棋盘覆盖最大子数组 源码链接:https://gi...
    廖少少阅读 5,890评论 0 7
  • 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文...
    北方蜘蛛阅读 7,998评论 1 4
  • 目录 [1. 顺序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 树表查找][6. 分块查...
    jiangmo阅读 18,024评论 4 6
  • 我不知道该用什么来表达我此时的心声,苦笑不语,当你真正喜欢一个东西,而它突然消失的感觉难以忘怀,消失,失去,最后只...
    在下七月阅读 1,711评论 0 2

友情链接更多精彩内容