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

  • 相关阅读:
    Mermaid | 强大的画图渲染脚本
    Tools | windows剪切板增强版
    Eclipse | eclipse食用教程
    WebSites | 常用工具网站
    Extensions | Extension && Plugins
    Java | IDE-Eclipse下载安装
    敲个采药玩玩
    今日sb题之 sdnuoj 1064
    stl概述
    给定 n 个字符串,求有多少字符串是其他字符串的前缀。
  • 原文地址:https://www.cnblogs.com/understander/p/6675681.html
Copyright © 2011-2022 走看看