二分查找(Binary Search)
二分法是一个简单而又有效的算法复杂度,由于实在太简单了,所以不写思路了,直接上代码吧,看了注释应该也很快可以理解
java实现:
public class test {
public static void main(String[] args) {
System.out.println("key在数组中的位置是:" + binarySearch(13, new int[]{1, 3, 5, 6, 9, 13, 16, 18, 22}));
}
private static int binarySearch(int key, int arr[]) {
int start = 0; //起点
int end = arr.length - 1; //终点
int mid;//中点
while (start <= end) {
mid = start + (end - start) / 2;
if (key < arr[mid]) { //key存在于扫描段的前半段的情况,终点前移
end = mid - 1;
} else if (key > arr[mid]) { //key存在于扫描段的后半段的情况,起点后移
start = mid + 1;
} else {//key的位置等于mid的位置的情况
return mid;
}
}
return -1;
}
}