简单的记录二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快。要求:待查找数组必须有序。
原理:
1.记录中间位置的关键字与待查找关键字比较,如两者相等代表查找成功,返回下标;
2.如果中间位置的关键字大于待查找关键字,则在数组的前半部分查找,修改最高点的值为middle-1;如果中间位置的关键字小于待查找关键字,则在数组的后半部分查找,修改最低点的值为middle+1;
3.重复以上步骤,直到查找完成。
public class MyTest {
public static void main(String[] args) {
int[] a = {6, 23, 15, 3, 1};
int i = binarySearch(a, 23);
System.out.println(i);
}
/**
* 折半查找(二分查找)
*
* @param a
* @param key
* @return
*/
private static int binarySearch(int[] a, int key) {
Arrays.sort(a);//要求数组必须有序
int low = 0;
int high = a.length - 1;
int middle = 0;
while (low <= high) {
middle = (low + high) / 2;
if (a[middle] == key) {//代表找到,返回对应的下标
return middle;
} else if (a[middle] > key) {// 在左侧找,修改最高点的值
high = middle - 1;
} else {// 在右侧找,修改最低点的值
low = middle + 1;
}
}
return -1;//代表没找到
}