数组的二分法查找
算法思想:
先算出中间的下标,然后再拿要找的数与中间的那个数(记此数为:x)进行比较,若x大于中间的数(记中间的数为middle),则把整个数组从中间分开,再从右边的一组数进行查找,反之,从左边的一组数进行查找。具体代码如下:
package com.hahaha.bean;
//以下为数组的二分法查找
public class DichotomousSearch {
public static void main(String[] args) {
/*
*使用二分法查找的前提:
* 所进行查找的数组必须有序(无所谓升序还是降序,此例采用升序的数组说明)
* 若无序,可进行排序,而后再进行二分法查找
*/
int[] arr = new int[]{-2,32,34,66,77,88,112,323};
boolean flag = true;
int x = 77;
int head = 0;//数组的首索引
int end = arr.length-1;//数组的尾索引
while(head<=end){
int middle = (head+end)/2;
if(x==arr[middle]){
System.out.println("找到了该元素,位置为:"+(head+end)/2);
flag = false;
break;
}
else if(x>arr[middle]){
head = (head+end)/2+1;
}
else if(x<arr[middle]){
end = (head+end)/2-1;
}
}
if(flag){
System.out.println("未找到该元素!");
}
}
}