Binary Search Tree
Time Complexity 时间复杂度
- T(n) = O(1) + T( n/2) = O(log n)
- T(n) = O(1) + T(n-1) = O(n)
时间复杂度为: O(n) - T(n) = O(1) + 2T(n/2)
时间复杂度: 还是O(n)
Recursion or While Loop
推荐使用 while loop
- 递归消耗资源
- 使用非递归, while 循环。
- 循环结束条件
- 四点要素
- start + 1 < end;
- mid = start + (end - start) / 2;
- A[mid]==
when and How
- 需要优化一个O(n)的暴力算法得到一个更快的算法。
- sorted assry or Rotated Sorted Array.
- 找到第一个,或者是最后一个。
比O(n) 更优化的,几乎只有O(log n).
Sqrt(x)
search insert position
search in a big sorted Array.
First Bad Version
- 有重复的元素,和无重复的元素。
有重复时,不能通过二分法,只能暴力的循环。
find peak element
二分实现
- first / last position of xxx
- 去掉一定没有结果的一半, 保留一定有结果的一半。
O(log n) search target in Rotated sorted Array.
Recover Rotated Sorted Array.
三步翻转法: