二分查找
二分查找有一个前提条件是:数组必须是有序的。
我们可以通过Arrays.sort()对数组直接进行排序。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = {1,3,5,2,6,8,9,23,56,34,23,14,28,17,18,16};
int target = 3;//目标元素
int index = -1;//目标元素下标,默认-1,代表不存在
//对数组进行排序
Arrays.sort(array);
System.out.println("排序后的数组为:" + Arrays.toString(array));
//用low和high分别代表数组的开始下标与结束下标
int low = 0, high = array.length - 1;
while(low <= high) {
int mid = (high + low) / 2;//计算中位元素的下标
if(array[mid] == target) {
index = mid;
break;
}else if(array[mid] < target) {
low = mid + 1;
}else if(array[mid] > target) {
high = mid - 1;
}
}
System.out.printf("目标元素%d在数组中的下标为:%d", target, index);;
}
}