//数组二分查找法
public static void main(String[] args) {
int[] arr = new int[1024];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
System.out.println(whileTwo(333,arr));
System.out.println(doWhileFindTwo(552,arr));
System.out.println(forFindTwo(998,arr));
}
public static int whileTwo(int find, int... arr) {
//假定最大值
int max = arr.length - 1;
//假定最小值
int min = 0;
int mid = 0;
//记录次数
int conut = 0;
while (arr[mid] != find) {
conut++;
if (find > arr[mid])
min = mid + 1;
if (find < arr[mid])
max = mid - 1;
mid = (max + min) / 2;
}
System.out.println(conut+"次数!");
return arr[mid];
}
public static int doWhileFindTwo(int find,int ... arr){
int max=arr.length-1;
int min=0;
int mid=0;
int count=0;
do{
count++;
if (find>arr[mid])
min=mid+1;
if (find<arr[mid])
max=mid-1;
mid=(max+min)/2;
}while(arr[mid]!=find);
System.out.println(count+"次数!");
return arr[mid];
}
public static int forFindTwo(int find,int ... arr){
int max=arr.length-1;
int min=0;
int mid=0;
int count=0;
for (int i = 0; i < arr.length; i++) {
count++;
if (find>arr[mid])
min=mid+1;
if (find<arr[mid])
max=mid-1;
mid=(max+min)/2;
if (find==arr[mid]) break;
}
System.out.println(count+"次数");
return arr[mid];
}