二分查找复杂度分析
- 第一次检索区间长度 N / 1 N/1 N/1
- 第二次检索区间长度 N / 2 N/2 N/2
- 第三次检索区间长度 N / 4 N/4 N/4
- …
- 第 k k k 次检索区间长度 N / ( 2 ( k − 1 ) ) N / (2 ^ {(k - 1)}) N/(2(k−1))
最坏情况下第 k k k 次检索区间长度为 1 才结束:
1 = N / ( 2 ( k − 1 ) ) 1 = N / (2 ^ {(k - 1)}) 1=N/(2(k−1))
N = 2 ( k − 1 ) N = 2^{(k-1)} N=2(k−1)
l o g N = ( k − 1 ) ∗ l o g 2 logN = (k-1) * log2 logN=(k−1)∗log2
l o g N ≈ k logN ≈ k logN≈k
即时间复杂度为 O ( l o g N ) O(logN) O(logN)