package suanfati;
import java.util.Arrays;
public class BinarySearch {
public static void main(String arg[]){
int[] arr = GenerateArray.generateArray(50);
int findNum = 15 ;
int[] sortArr = MaoPaoPaiXu.paiXu(arr);
int result = binarySearch(arr,findNum);
System.out.println(Arrays.toString(sortArr));
if(result != -1){
System.out.println("已经找到对应的数字,位于第" + (result + 1) + "个数字!");
}else{
System.out.println("返回 -1 , 没有找到这个数字");
}
}
public static int binarySearch(int[] arr, int findNum){
int left = 0;
int right = arr.length - 1 ;
while(left < right){
int middle = (left + right) / 2;
System.out.println("left:" + left);
System.out.println("right:" + right);
System.out.println("middle:" + middle);
System.out.println(findNum);
System.out.println(arr[middle]);
System.out.println("arr[middle]");
if(findNum == arr[middle]){
return middle;
}else if(findNum > arr[middle]){
left = middle + 1;
System.out.println(left);
System.out.println(middle);
System.out.println(" 11111111111 ");
}else{
right = middle - 1;
System.out.println(right);
System.out.println(middle);
System.out.println(" 222222222222 ");
}
System.out.println(arr[middle]);
System.out.println("==================");
}
// 找到尽头在匹配一次,此时左侧跟右侧相等
if(left == right){
if(findNum == arr[left]){
return left;
}
}
return -1;
}
}
二分法从数组中查找某一个数字java
于 2024-04-17 10:31:43 首次发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)