while循环写法
提醒一下这里的查找法所查找的数组是在被从小到大的顺序排了一下
public static void search(int[] arr,int key) {
int min = 0;
int max = arr.length - 1;
int mid = (max + min) / 2;
int c = 0;
while(c != max) {
if(key > arr[mid]) {
mid = (mid + max) / 2;
}else if(key < arr[mid]) {
mid = (mid + min) / 2;
}else {
System.out.println("查找的"+key+"在第"+(mid+1)+"位");
return;
}
c++;
}
System.out.println("查找的"+key+"不在数组内");
}
这里的最后结构是打印出来的
递归写法
public static int search(int[] arr,int key,int min, int max, int mid) {
mid = (max + min) / 2;
if(key > arr[max] || key < arr[min] || max == min) {
return min;
}
if(key > arr[mid]) {
return search(arr, key, mid + 1, max, mid);
}else if(key < arr[mid]) {
return search(arr, key, min, mid - 1, mid);
}else {
return mid+1;
}
}
这里的结果并未打印出来,只有一个返回值