//主要的思想就是“折半”:首先这个数组必须是有序的,若无序应先排序。判断val与中间数的大小,大的话,就在后半部分找,小的话就在左半部分找。利用循环依次进行///寻找
public class BinarySearch {
public static Integer search(Integer[] data,Integer val){
Integer m;
Integer left=0;
Integer right=data.length-1;
if(val>data[data.length-1]||val<data[0])
return -1;
else {
while(left<=right){
m=(right-left)/2+left;
if(val==data[m]){
return m;
}
else if(val>data[m]){
left=m+1;
}
else {
right=m-1;
}
}
return -1;
}
}
}
主函数:
public class Main{
public static void main(String[] args){
integer[] data={1,3,5,7,9,12,14,15,18};
System.out.println(BinarySearch.search(data,14));
}
}