简易版二分查找
作者:互联网
简易版二分查找
二分查找要求所查找的顺序表必须是有序的,其思想非常简单。定义minIndex为顺序表最左端元素位置,maxIndex为顺序表右端元素位置。定义centerIndex = (minIndex + maxIndex) / 2,即顺序表的中间位置,然后用所查找的值与centerIndex所在位置处的值比较,由于列表有序,若所查找的值比centerIndex小,则只需在表的前半部分查找,否则只需在表的后半部分查找(若第一次比较就发现两值相等则直接返回当前值所在的位置),以此类推,直至查找到所寻找的值或确定所查找的值不在该列表内为止(即查找失败)
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6,7,8,9,10};
int num = 2;
int minIndex = 0;
int maxIndex = nums.length-1;
int centerIndex = (maxIndex+minIndex)/2;
while (true){
if (nums[centerIndex] > num){
maxIndex = centerIndex-1;
}else if (nums[centerIndex]<num){
minIndex = centerIndex+1;
}else {
break;
}
//假设数组中不存在该值
if (minIndex > maxIndex){
centerIndex = -1;
break;
}
//当边界发生变化需要重新定义中间下标
centerIndex =(minIndex+maxIndex)/2;
}
System.out.println("位置是"+centerIndex);
}
标签:二分,minIndex,nums,int,maxIndex,简易版,查找,centerIndex 来源: https://blog.csdn.net/weixin_44898999/article/details/116125004