二分查找
解题思路:
1.首先对数组进行排序
注意:二分查找必须是有序数组
2.定义首下标和尾下标
3.使用while循环遍历数组元素,计算出中间下标
4.判断:
若中间下标的元素等于目标元素,直接退出循环若中间下标元素小于目标元素,则首下标变为中间下标加1
若中间下标元素大于目标元素,则尾下标变为中间下标减1
import java.util.Arrays;
public class r16 {
public static void main(String[] args) {
//二分查找
int[] numbers= {3,124,33,12,23,45,34,16,37,48};
int target=12; //目标元素
int index=-1; //初始目标元素下标,-1默认不存在
//对数组进行排序
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));//排序后的数组
//定义初始首下表和尾下表
int low=0;int high=numbers.length-1;
while(low<=high) {
int mid=(low+high)/2; //计算中间下标
if(numbers[mid]==target) {
index=mid;
break;
}
else if(numbers[mid]<target) {
low=mid+1;
index=mid;
}
else if(numbers[mid]>target) {
high=mid-1;
index=mid;
}
}
System.out.println("目标元素在数组中的下标位置:"+index);
}
}