俩分法的时间复杂度
效率很高,时间复杂度是O(logN)。但是条件也比较苛刻
- 必须是有序数组的,支持通过下表随机访问。如果用链表会退化成时间复杂度O(n)
 - 数组必须有序,所以在查找前需要对数组进行排序,
 - 数量太小不适合二分查找法。因为在数据量小的时候LogN不见得比遍历数组要快
 - 数量太大不适合二分查找法,因为数组要申请一片连续空间的内存如果太大,可能内存会不够用。
 
二分查找法的俩种实现方式
递归
1  | public int search(int[] a, int dest) {  | 
循环
1  | public int search(int[] a, int dest) {  | 
例子:算一个数的平方跟
这到例子主要是讲解,二分法的解决思路,先确认查找范围x比1大1–x,如果x在0和1之间0–1,然后用二分法求解mid最接近结果。
1  | public double squart(double x, int n) {  | 
二分法变形查找
1  | 
  | 
课后作业-leetcode33
1  | public static void main(String[] args) {  | 


