package com.liu.util;
public class BinarySearch {
/**
* 二分查找针对有序序列
* 先将0赋值给low,序列长度赋值给high,中间序号赋值给mid
* 用nums[mid]和待查找数做对比,
* 若nums[mid]小于待查找数,则将mid+1赋值给low,最后一位数的序号赋值给high,中间序号赋值给mid;
* 若nums[mid]大于待查找数,则将mid-1赋值给high,第一个数的序号赋值给low,中间序号赋值给mid;
* 递归前三步操作直到high等于low,若还未查找到,则序列中不存在待查找数
*/
public static int getNum(int[] nums, int high, int low, int num){
int mid = (high + low) / 2;
// 若查找到则返回序号
if(nums[mid] == num){
return mid;
}
// 若已经查找完序列还未找到则不存在待查数
else if(high <= low){
return -1;
}
// 若中间数小于待查数
else if(nums[mid] < num){
return getNum(nums, high, mid+1, num);
}
// 若中间数大余待查数
else if(nums[mid] > num){
return getNum(nums, mid-1, low, num);
}
else{
return -1;
}
}
}
二分查找
最新推荐文章于 2021-04-24 16:45:18 发布