基本原理:
首先对这个数组进行从小到大的升序排序。
然后确定一个你需要找的key值。
找到数组中间的那个数,与key进行比较。
如果小于key,则取数组的后半段继续查找。
如果大于key,则取数组的前半段继续查找。
如果等于key,就返回。
代码:
public class demo {
public static void main(String[] args) {
int[] arrays = {9,84,561,5,46,5,89,8,54,6,65,4,46};
//对数组进行从小到大的排序
Arrays.sort(arrays);
//对排序之后的数组输出
System.out.println(Arrays.toString(arrays));
int result = twoSort(arrays,0,arrays.length,89);
//若返回值为-1则不包含,
System.out.println(result);
}
private static int twoSort(int[] arrays,int beginNum,int endNum,int key){
int min = beginNum;
int max = endNum - 1;
while (min<=max){
int index = (min + max) / 2;//从数组中间分隔
int arr = arrays[index];
if(arr<key){
min = index+1;//如果中间这个数小于key,则从后半段中继续查找
}else if (arr>key){
max = index-1;//如果中间这个数大于key,则从前半段中继续查找
}else {
return index;//如果中间这个数等于key,就返回角标
}
}
return -1;//如果数组中不包含key,就返回-1
}
}