本文链接:https://blog.csdn.net/qq_41940721/article/details/103930707
二分法查找的原理:
代码:
public static void main(String[] args) {
String[] arr = new String[] {“GG”,“MM”,“JJ”,“DD”,“BB”,“AA”};
//数组的复制(区别于数组的赋值:arr1 = arr)
String[] arr1 = new String[arr.length];
for (int i = 0; i < arr1.length; i++) {
arr1[i] = arr[i];
}
//数组的反转
for (int i = 0,j = arr.length -1;i < j; i++,j--) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//遍历
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
//数组的查找 (二分法查找)
//前提 :数组必须是有序的
int[] arr2 = new int[] {-90,-78,-77,0,123,345,657,875,899,990,999};
int dest = 345;
int head = 0;//初始首索引值
int end = arr2.length -1;//初始的末索引
boolean isFlag = true;
while(head <= end) {
int mid = (head + end) / 2; //得到索引的中间值
if (dest == arr2[mid]) {
System.out.println("找到了指定的元素,位置为:"+mid);
isFlag = false;
break;
}else if (arr2[mid] > dest) {
end = mid -1;
}else {//arr2{mid} <dest
head = mid + 1;
}
}
if (isFlag) {
System.out.println("很遗憾没有找到啦!");
}
}