import java.util.Arrays;
/*
A:画图演示
二分查找
{11,22,33,44,55,66,77} --> 找 22
B: 思想: 每一次都查中间的那个元素,比较大或者小就能减少一般的元素
*/
public class ArraysDemo3 {
public static void main(String[] args) {
//定义数组
int[] arr = {11,22,66,33,44,55,66,77,88};
int target =78;
//int index = queryByHalf(arr, target);
int index = Arrays.binarySearch(arr, target);
ArraysTool.printArr(arr);
Arrays.sort(arr);
ArraysTool.printArr(arr);
// System.out.println("您查找的元素的角标为:" + index);
}
private static int queryByHalf(int[] arr, int target) {
//定义角标
int start = 0; //初始位置
int end = arr.length-1; //末尾位置
int index = -1;
//循环比较
while (start <= end) {
int mid = (start + end) /2;
// 比较
if (arr[mid] > target){
end = mid-1;
}else if(arr[mid] < target){
start = mid+1;
}else{
System.out.println("找到了");
index = mid;
return index;
}
}
return index;
}
}
|
|