时间复杂度是:O(logn)。
二分查找的基础条件:有序数组。
二分查找的基本框架:设置一个left指针,一个right指针,mid = floor((left+right)/2),循环条件是left<=right,查看Mid是否是要查找的数,不是的话根据大小移动左右指针缩小范围继续查找。
「只要看到面试题里给出的数组是有序数组,都可以想一想是否可以使用二分法。」
总结
希望通过这道题目,大家会发现平时写二分法,为什么总写不好,就是因为对区间定义不清楚。
确定要查找的区间到底是左闭右开[left, right),还是左闭又闭[left, right],这就是不变量。
然后在「二分查找的循环中,坚持循环不变量的原则」,很多细节问题,自然会知道如何处理了。