package org.sxt.c;
/*
* 二分查找
* 迭代方法
* 递归方法
*
*/
public class BinarySearch {
public static int binarySearch0(int[] array,int key) {
int low=0;
int high=array.length-1;
while(low<=high) {
int mid=(low+high)/2;
if(key==array[mid]) {
return mid;
}else if(key<array[mid]) {
high=mid-1;
}else {
low=mid+1;
}
}
return -1;
}
public static int binarySearch(int[] array,int key,int low,int high){
if(low>high) {
return -1;
}
int mid= (low+high)/2;
if(key==array[mid]) {
return mid;
}else if(key<array[mid]){
return binarySearch(array,key,low,mid-1);
}else {
return binarySearch(array,key,mid+1,high);
}
}
}
package org.sxt.test;
import java.util.Arrays;
import org.sxt.c.BinarySearch;
public class TestSelect {
public static void main(String[] args) {
//1.给出有序数组
int array[]= {2,9,15,38,42,48,50,79};
//2.输出有序数组
System.out.println("当前数组:"+Arrays.toString(array));
System.out.println("比如说查找元素42,返回位置:");
int result1=BinarySearch.binarySearch0(array, 42);
int result2=BinarySearch.binarySearch(array, 42, 0, array.length);
System.out.println("迭代查找结果"+result1+"\n"+"递归查找结果"+result2);
}
}