在java中,我们常用的查找方法有两种:
(1)顺序查找
(2)二分查找
/*
* 作者:筱筱
* 功能:二分查找
*/
public class binarySearch {
public static void main(String[] args){
int arr[] = {1,3,5,7,9,11,13,15,17,19};
BinaryFind bf = new BinaryFind();
bf.find(0, arr.length, 15, arr);
bf.find(0, arr.length, 10, arr);
}
}
//二分法
class BinaryFind{
public void find(int leftIndex, int rightIndex, int val,int arr[]){
//首先找到中间的数
int middleIndex = (leftIndex+rightIndex)/2;
int midval = arr[middleIndex];
if(rightIndex >= leftIndex){
if(val > midval){
//若值比中间的数大,则在数列的右侧找
find(middleIndex+1,rightIndex,val,arr);
}else if(val < midval){
//若值比中间的数小,则在数列的左侧找
find(leftIndex,middleIndex-1,val,arr);
}else if(val == midval){
System.out.println("找到下标为:"+middleIndex);
}
}else{
System.out.println("未找到相应值");
}
}
}