只适用于排序的数组元素,没有排序的数据是无法查找的
二分法查找的终止条件:一直折半,直到中间的那个元素恰好是被查找的元素。|
代码实现
package com.company.Arraysearch;
public class Arraysearch {
public static void main(String[] args) {
int[] arr = {1,2,3,4,56,77,78,89};
//找出数组中所在的元素的下标
int index = binarysearch1(arr,56);
System.out.println(index == -1 ? "该元素下标不存在" : "该元素下标为" + index);
}
private static int binarysearch1(int[] arr, int dest) {
int begin = 0;//开始下标
int end = arr.length - 1;//结束下标
while (begin <= end){
int mid = (begin + end) /2 ;//中间元素下标
if (arr[mid] == dest){
return mid;
} else if (arr[mid] < dest){
begin = mid + 1;//说明目标元素在中间元素的右边,则开始元素下标需要发生变化
} else {
end = mid - 1;//则另外一种情况为目标在中间元素的左边,修改结束元素下标,结束元素的下标一直减
}
}
return -1;
}
}