二分法(二分法找目标数在不在数组中)
findGoal方法重点
先动首尾,middle才跟着动的
代码:
import java.util.Scanner;
import java.util.Arrays;
public class eightytwo {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
String s=reader.nextLine();
int goal=reader.nextInt();
String a[]=s.split(" ");
int[] b=new int[a.length];
for(int i=0;i<a.length;i++) {
b[i]=Integer.parseInt(a[i]);
}
Arrays.sort(b);
if(findGoal(0,(a.length-1),goal,b)==1) {
System.out.println("have");
}
if(findGoal(0,(a.length-1),goal,b)==0) {
System.out.println("not have");
}
}
public static int findGoal(int a,int b,int g,int[] arr) {
int min=a;int max=b;
while(min<=max) {
int mid=(max+min)/2;
if(arr[mid]==g) {
return 1;
}
else if(arr[mid]<g) {
min=mid+1;
}
else {
max=mid-1;
}
}
return 0;
}
}
/*
1 2 3 4 66
23
*/
运行结果: