美文网首页
【算法】BinarySearch--二分搜索/折半查找法

【算法】BinarySearch--二分搜索/折半查找法

作者: 8c3c932b5ffd | 来源:发表于2017-02-27 22:04 被阅读48次

前两天阅读SparseArray时看到里面查找数组中是否已经包含某key时使用了binary search方法,其中还使用了一些位操作,今天简单分析一下

wiki 图示:(Link)

binary search wiki pic.png

Android中util.ContainerHelpers中的实现api:

binary search.png

排序前提:array本身已为有序数组

查找过程:
0.向右无符号移位1位,得到middle位值;
1.以mid为准比对midIndex位置值与参数value大小,大则hi位移至现mid位前一位,小则lo位移至现mid位后一位,相等则返回mid;
2.重复以上过程直至不满足循环条件或是又查找结果

从low、high可以看出,结果返回的是value在数组中对应的index,如果为负则代表不存在(最后一行,返回~lo会得到一个负数,因为lo计算结果一定为正,个人感觉直接返回一个负数可以连按位取反都省略掉,是不是性能更优?)


Java 位操作符:


Java bit calculate.png

识别二维码,关注公众号“夕识”


夕识.jpeg

相关文章

  • 【算法】BinarySearch--二分搜索/折半查找法

    前两天阅读SparseArray时看到里面查找数组中是否已经包含某key时使用了binary search方法,其...

  • 算法-二分搜索算法

    算法:二分搜索算法(折半查找算法)时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 解析前端面试之二分查找算法

    二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。 二分法查找的思路如下: (1)首先,从数组的...

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 经典算法剖析

    二分查找 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程可以分为以下步骤:(1)首先...

  • 算法:二分法查找(折半查找法)

    算法:二分法查找(折半查找法) 这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道...

  • 16 基本查找算法:二分查找算法

    二分查找算法 原理 二分查找算法也叫折半法查找法,要求待查找的列表必须是按关键字大小有序排列的顺序表。查找过程如下...

  • js实现二分法查找方法

    所谓二分法查找法,也就是折半查找,它是一种在有序数组查找特定元素的搜索算法。 参考《前端程序员面试秘籍》 思想:从...

网友评论

      本文标题:【算法】BinarySearch--二分搜索/折半查找法

      本文链接:https://www.haomeiwen.com/subject/ibktgttx.html