• 二分查找


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

    基本思路是:将给定的值 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 }
  • 相关阅读:
    zTree根据json选中节点,并且设置其他节点不可选
    点击一次按钮,发生多次ajax请求
    sublimeText3 中配置sass环境,并将编译后文件保存到指定文件夹
    MD5加密
    c# Http请求之HttpClient
    xml与object 之间的ORM
    wpf和winform的那点区别
    c# http请求ajax页面
    c# https请求
    python爬虫框架Pyspider初次接触
  • 原文地址:https://www.cnblogs.com/peanut-zh/p/14233340.html
Copyright © 2020-2023  润新知