zoukankan      html  css  js  c++  java
  • 二分查找

    二分查找(也称折半查找),仅适用于有序的顺序表。

    基本思路是:将给定的值 key 与表中中间位置元素的关键字比较,

             若相等,则查找成功,返回该元素的存储位置;

             若不等,根据其大小关系,在中间元素的左半部或者右半部进行查找;

          一步步缩小范围,直到查到为止。若没查到,则查找失败。

    推荐下面这条链接,liweiwei1419大神的分析,主要是边界的判断。

    https://leetcode-cn.com/problems/search-insert-position/solution/te-bie-hao-yong-de-er-fen-cha-fa-fa-mo-ban-python-/

     1 public class Binary_Search {
     2     public static int searchInsert(int[] nums,int target){
     3         //要取中间元素,要通过来头元素和结尾元素求得
     4         int low = 0;
     5         int high = nums.length - 1;
     6         int mid;
     7 
     8         //循环查找target
     9         while (low <= high){
    10             mid = (low + high) / 2;
    11             //mid 与 target 比较
    12             if(nums[mid] == target){ //相等 -> 找到
    13                 return mid;
    14             } else if(nums[mid] > target){//中间元素比 目标值大 -> 在左半部分
    15                 high = mid - 1;
    16             } else {//中间元素比 目标值小 -> 在右半部分
    17                 low = mid + 1;
    18             }
    19         }
    20         //查找结束,没找到,返回 -1
    21         return -1;
    22     }
    23 
    24     public static void main(String[] args) {
    25         int[] nums = {1,3,4,5};
    26         int i = searchInsert(nums, 5);
    27         int j = searchInsert(nums, 7);
    28         System.out.println(i);
    29         System.out.println(j);
    30     }
    31 }
  • 相关阅读:
    [computer graphics]世界坐标系->相机坐标系详细推导
    [Computer Vision]霍夫变换直线检测
    [OpenGL](翻译+补充)投影矩阵的推导
    [WebGL]二维变换
    [WebGL]Shader中的数据和简单的工作流
    图像梯度
    皮肤镜图片毛发去除
    胸部CT提取分割肺部
    医学影像重采样
    ES7学习笔记(十二)高亮 和 搜索建议
  • 原文地址:https://www.cnblogs.com/peanut-zh/p/14233340.html
Copyright © 2011-2022 走看看