其他分享
首页 > 其他分享> > 简易版二分查找

简易版二分查找

作者:互联网

简易版二分查找

二分查找要求所查找的顺序表必须是有序的,其思想非常简单。定义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