/**
* 升序数组查找目标值,折半查找的一般方法实现
* @param nums
* @param target
* @return
*/
static int binarySearch1(int[] nums,int target){
int start = 0, end = nums.length-1;
while(start<=end){
int mid = (start+end)/2;
if(target>nums[mid]){
//目标值比中间值大,目标值在右半部分,改变start位置,到右边部分查找
start = mid+1;
}else if(target<nums[mid]){
//目标值比中间值小,目标值在左半部分
end = mid-1;
}else {
//找到目标值,返回其所在位置
return mid;
}
}
return -1;
}
/**
* 折半查找的递归实现
* @param arr
* @param start
* @param end
* @param key
* @return
*/
static int searchNums(int[] arr,int start,int end,int key){
int mid = (start+end)/2;
if(start<=end){
if(key>arr[mid]){
return searchNums(arr,mid+1,end,key);
}else if(key<arr[mid]){
return searchNums(arr,start,mid-1,key);
}else {
return mid;
}
}else {
return -1;
}
}
java实现折半查找,一般方法实现和递归实现
于 2024-01-29 21:15:19 首次发布