Java-二分查找与二叉树关系详解-2021-7-20

  •  leetcode第704题二分查找,想必大家都知道具体的解题思路了,无非以下几点

  • 比较数组中间的数是否与目标值相等、是否比中间值小、是否比中间值大

  • 看完leetcode官方给出的题解后,其中中间值的公式让我有点懵,于是我特意百度了一下,发现百度中收录的题解公式是这样的

 

  •  无符号右位移,在这之前我一直以为二分查找是这样的,从中间值一直向左查询目标值,或者向右查询目标值。所以我特意套入百度百科上的公式试了一下,发现真的就是“二分查找”,这才发现自己以前理解的“二分查找”有误

  • 可以通过画一个二叉树来解这道题,如下,我们可以看到“二分查找”每次都是从中间值开始查找并且进行left+1或者right-1的操作的,而且在右树的查找中,right的值永远不变,在左树的查找中,left的值永远不变

 

这样看来,二分查找是不是明了了很多?

 

posted @ 2021-07-21 00:11  zemengchen  阅读(131)  评论(0编辑  收藏  举报