zoukankan      html  css  js  c++  java
  • 二分查找法(binary search)

    二分查找法:一种在有序列表中查找某个值的算法,它每次都将待查找的空间分为两半,在其中一般继续查找。
    使用二分查找的前提是:已经排序好的列表。否则,sum对其查找的结果不做保证。
    代码实现:
    // 使用while循环的二分查找法
    public static int binarySearch(int[] numbers, int target) {
    int min = 0;
    int max = numbers.length - 1;
    while (min <= max) {
    int mid = (max + min) / 2;
    if (numbers[mid] == target) {
    return mid; // found it
    } else if (numbers[mid] < target) {
    min = mid + 1; // too small
    } else {
    max = mid - 1; // too large
    }
    }
    return -min - 1; // not found
    }

    // 使用递归的二分查找法
    //参数:数组,数组开始下标,数组结束下标,查询目标值。
    //返回值:为查询值在原数组中的位置,若查询值不在数组中,则返回-1
    public static int binarySearch(int[] nums ,int start,int end,int target){
    int middle = (start + end)/2;
    //判断数组是否为空
    if(start > end){
    return -1;
    }

    	//数组非空,判断目标值
    	if(nums[middle] < target){
    		start = middle +1;
    		return binarySearch(nums, start, end, target);
    	}else if(nums[middle] == target){
    		return middle;
    	}else{
    		end = middle -1;
    		return binarySearch(nums, start, end, target);
    	}
    }
    

    ////end

  • 相关阅读:
    创建线程方法
    List 接口
    implements 的用法
    import和export 的使用方法
    js 实现 a == 'juejin' && a == 666 && a == 888
    position的属性运用
    css calc()函数 长度运算
    .net5一分钟入门
    css 如何让大小不同的图片表现一致,同时自适应呢?
    sqlserver isnull(),Count(),sum(),month(getdate()) 的用法
  • 原文地址:https://www.cnblogs.com/understander/p/6675681.html
Copyright © 2011-2022 走看看