package arrays;
public class HalfSerch {
/*
* 1,要查找的数据源必须采用顺序存储方式,比如数组的形式
2,要查找的数据必须按照关键字排序,必有序
*/
//折半查找也叫二半查找,该方法查找的条件必须是:查找的数组必须是有序的。
public static int halfSerch(int[] arr,int key){
int low=0,hight=arr.length-1,mid=0;
while(low<hight){
mid=(low+hight)/2; //mid向下取整
if(arr[mid]>key)
hight=mid-1;
else if(arr[mid]<key)
low=mid+1;
else
return mid; //表示查找到的位置
}
return -1; //表示没有找到
}
// 二分查找递归实现
public static int binSearch(int a[], int start, int end, int key) {
int mid=(start+end)/2; //也可以用int mid=(start+end)>>>1;
if (a[mid] == key) {
return mid;
}
if (start >= end) {
return -1;
} else if (a[mid] < key) {
return binSearch(a, mid + 1, end, key);
} else if (a[mid] > key) {
return binSearch(a, start, mid - 1, key);
}
return -1;
}
public static void main(String[] args){
int[] array={1,5,8,12,23,44,65,77,90,114,353};
//int x=HalfSerch.halfSerch(array, 65);
int x=HalfSerch.binSearch(array,0,array.length-1,70);
System.out.println("xxx--:"+x);
}
}
折半查找(二分查找)
最新推荐文章于 2023-01-11 23:10:52 发布