@Binary Search Algorithm
Binary Search
前提
一定要是:A sorted list.
算法过程
- 找出中间元素;
- 与target num 进行比较:
- “=” => 搜索过程结束;
- middle > target => left = mid-1
middle < target => right = mid+1
继续循环比较
直到 left > right - 如果在某一步骤数组为空,则代表找不到。
代码实现
Python
def binarySearch(arr,target):
l = 0
r = len(arr)-1
while l <= r:
#防止溢出
mid = l+(r-l)/2
#开始比较
if arr[mid]==target:
return mid
elif arr[mid] < target:
l = mid+1
else: r = mid - 1
return None
Java
public static int binarySearch(int[] arr,int target){
int l = 0;
int r = arr.length - 1
while (start <= end){
//防止溢位
int mid = start + (end - start)/2;
if (arr[mid] ==target)
return mid;
else if (arr[mid] < target)
l = mid + 1;
else { r = mid -1;
}
}
return false;
}
java 数组和字符串的长度获取(经常忘记)
// 获取数组的长度
int[] arr = new int[3];
System.out.println(arr.length);
// 获取字符串的长度
String str = "小黄花";
System.out.println(str.length());
Running Time
Big O notation
看算法运行速度