动态规划
二分法
最简单的二分法:
题目:array = [1, 3, 4, 5, 6],查找数组内值为num的下标index
思路:在初始情况下, index<=right index=0, right=4
一步一步尝试性地缩小index的查找的范围:
由于数组是顺序性的,每次尝试获取left与right的均值,即mid = left + right >> 1,通过比较array[mid] 与 num的大小,检查index应该在mid的左边还是右边。
- 如果array[mid] > num right -= 1
- 如果array[mid] < num left +=1
- 如果array[mid] = num 下标就是num
二分法总结:
首先找到算法的输出,例如下标index
找到输出的值的初始范围 : index <= right, 初始index = 0
计算中位点, mid = left + right >> 1
找出中位点与条件的关系,这一步比较抽象,通过比较中位点与条件,从而缩小left或者right,例如比较array[mid] 与 num的大小,后续缩小范围很好理解。