二分法查找的前提是数组必须是依次从小到大有序排列的,所以在查找前要先对数组中的元素进行排序。
package com.instances;
import java.util.Arrays;
public class BinarySearch {
public static void main(String[] args) {
int[] arr={23,56,2,4,89,15,99,7,8};
int x=search(arr, 8);
System.out.println("要查找的数据对应的角标是:"+x);
}
public static int search(int[] arr,int key){
// 先对数组进行排序,这一点应注意
Arrays.sort(arr);
// 将数组转成字符串打印出来
System.out.println(Arrays.toString(arr));
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while (arr[mid]!=key) {
if (arr[mid]<key) {
min=mid+1;
}else if (arr[mid]>key) {
max=mid-1;
}
if (max<min) {
return -1;
}
mid=(min+max)/2;
}
return mid;
}
}