运用二分查找,有两个指针l和r,每次都会更新出一个新的mid=(l+r)/2,若查找的数在mid左边,则r=mid-1;若在右边,则l=mid+1,有步骤可知,每次更新出一个mid,查找范围会少一半,因此时间复杂度为O(logn),比如n=16,查找的数在1的位置(极端情况):
初始,l=1,r=16。
更新出mid=8,判断得l=1,r=7。
更新出mid=4,判断得l=1,r=3。
更新出mid=2,判断得l=1,r=1。
更新出mid=1,判断得已经找出结果。
以上查找了4次,时间复杂度为O(4),log16=16=4,因此正确。