2018-09-07
2018-09-07 本文已影响0人
ssqssqssq
二分查找算法:
二分查找搜索的是有序表,时间复杂度是O(log(n))。需要一个辅助变量来表示是否已经找到target。
核心算法思想:
1.定义左指针left ,定义右指针right,定义中间指针mid,mid=1+(mid-1)/2; # //int mid = (r + l) / 2; //潜在bug 可能会使r+l 溢出
2.因为是有序表,所以从中间的变量开始进行查找,分三种情况:
if target==item[mid],return index;
if target > item[mid], 说明在右半部分,将left = mid+1,继续在右半部分进行查找
if target < item[mid],说明在左半部分,将right=mid-1,继续在左半部分进行查找
3.循环,查找结束。
循环条件 left < right
代码如下: