Java-二分查找与二叉树关系详解-2021-7-20
-
leetcode第704题二分查找,想必大家都知道具体的解题思路了,无非以下几点
-
比较数组中间的数是否与目标值相等、是否比中间值小、是否比中间值大
-
看完leetcode官方给出的题解后,其中中间值的公式让我有点懵,于是我特意百度了一下,发现百度中收录的题解公式是这样的
-
无符号右位移,在这之前我一直以为二分查找是这样的,从中间值一直向左查询目标值,或者向右查询目标值。所以我特意套入百度百科上的公式试了一下,发现真的就是“二分查找”,这才发现自己以前理解的“二分查找”有误
-
可以通过画一个二叉树来解这道题,如下,我们可以看到“二分查找”每次都是从中间值开始查找并且进行left+1或者right-1的操作的,而且在右树的查找中,right的值永远不变,在左树的查找中,left的值永远不变
这样看来,二分查找是不是明了了很多?
因上努力,果上随缘