如下为代码
package system.test1;
import java.util.Arrays;
public class ytest {
public static void main(String[] args) {
int[] a = {6,5,3,4,7,9,10};
Arrays.sort(a);
System.out.println("排序后a[]为" + Arrays.toString(a));//{3,4,5,6,7,9,10}
System.out.println("递归二分查找a[]中6的下标为"+ytest.binarysearch(a, 6, 0, a.length));
int[] b={7,2,9,8,4,6,8};
Arrays.sort(b);
System.out.println("排序后b[]为" + Arrays.toString(b));
System.out.println("非递归二分查找b[]中6的下标为"+ytest.binarysearch2(b,6));
}
public static int binarysearch(int[] b, int target, int fromindex, int endindex) {
int mid = (fromindex + endindex) / 2;
if (fromindex > endindex)
return -1;
if (b[mid] > target) {
return binarysearch(b, target, fromindex, mid - 1);
} else if (b[mid] < target) {
return binarysearch(b, target, mid + 1, endindex);
} else return mid;
}
public static int binarysearch2(int []b,int target){
int start=0;
int end=b.length-1;
int mid;
while(start<=end)
{
mid=(start+end)/2;
if(target<b[mid])
{
end=mid-1;
}else if(target>b[mid])
{
start=mid+1;
}else
{
return mid;
}
}
return -1;
}
}
运行结果如下