JAVA 二分法检索
二分法检索原理:
(1)将无序数列按递增顺序排列成有序数列
(2)比较要检索的元素和该数列中间位置元素的大小,若相等返回该中间值
(3)若比中间值大(或小),则在数列的后半部分(前半部分) 按同样的原理比较,直到找到为止
//二分法检索
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] s = { 8,55,14,89,20,44,32,6,7,1};
//索引元素1
int searchNum = 1;
System.out.println(Arrays.toString(s));
//先对数列进行排序I(递增)
Arrays.parallelSort(s);
System.out.println(Arrays.toString(s));
if(binarySearch(s,searchNum) == -1) {
System.out.println(searchNum+"元素的索引不存在");
}
else
System.out.println(searchNum+"元素的索引:"+binarySearch(s,searchNum));
}
public static int binarySearch(int[] x,int num) {
int low = 0;
int high = x.length-1;
while(low<=high) {
int middle = (low+high)/2;
if(num==x[middle]) {
return middle;
}
if(num>x[middle]) {
low=middle+1;
}
if(num<x[middle]) {
high=middle-1;
}
}
//该循环完毕仍未返回值,则返回-1
return -1;
}
}