首页 > 其他分享 >力扣704 二分查找

力扣704 二分查找

时间:2022-11-05 12:57:23浏览次数:53  
标签:二分 high arr 704 --- 力扣 middle 查找 low

二分查找 二分查找概述:   Binary Search,也叫折半查找。折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。   二分查找原理:   首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 人话:    将要查找的元素一分为二,比较查找元素和中间值的大小,比中间值小往前走,比中间值大往后走,一直重复执行这个过程,直至查找到或找不到。
        1. 设置查找区间:low = 0;high= n;
        2. 若查找区间[low, high]不存在,则查找失败;否则转步骤3
        3. 取中间位mid = (low + high) / 2;比较 target 与 arr[mid],有以下三种情况:
                3.1 若 target < arr[mid],则high = mid - 1;查找在左半区间进行,转步骤2;
                3.2 若 target > arr[mid],则low = mid + 1;查找在右半区间进行,转步骤2;
                3.3 若 target = arr[mid],则查找成功,返回 mid 值   二分查找实例:  以有序数组1到10数字为例: 查找元素为9
(1) low=0,high=9,middle=(0+9)/2=4, 9>arr[4]--->往右找 (2) low=4+1=5,high=9,middle=(5+9)/2=7, 9>arr[7]--->往右找 (3) low=7+1=8,high=9.middle=(8+9)/2=8, 9=arr[8]--->查找成功

0       4         9
1 2 3 4 5 6 7 8 9 10
low       middle         high
 
          5   7   9
1 2 3 4 5 6 7 8 9 10
          low   middle   high
 
                8 9
1 2 3 4 5 6 7 8 9 10
                low middle high
  查找元素为11 (1) low=0,high=9,middle=(0+9)/2=4, 11>arr[4]--->往右找 (2) low=4+1=5,high=9,middle=(5+9)/2=7, 11>arr[7]--->往右找 (3) low=7+1=8,high=9,middle=(8+9)/2=8, 11>arr[8]--->往右找 (4) low=8+1=9,high=9,middle=(9+9)/2=9, 11>arr[9]--->往右找 (5) low=9+1=10,high=9,low>high--->查找失败   二分查找代码:      

标签:二分,high,arr,704,---,力扣,middle,查找,low
From: https://www.cnblogs.com/cjhtxdy/p/16859920.html

相关文章

  • 基本算法篇——二分查找
    基本算法篇——二分查找本次我们介绍基础算法中的二分查找,我们会从下面几个角度来介绍二分查找:二分查找简述二分查找模板二分查找边界例题数的范围二分查找简述首......
  • B - K-th Number HDU - 6231 (二分 尺取)
    WindowsSource2017中国大学生程序设计竞赛-哈尔滨站题意给一个数组,在所有长度大于等于k的区间内,找出第\(k\)大的数,放到另一个数组中,然后在新数组中找到第M大的数。思......
  • 力扣-238-除自身以外数组的乘积
    要求时间复杂度O(N),也就是说一次遍历,然后不让用除法也就是说不能拿总乘积挨个除不能双重for循环但是没限制空间复杂度能不能比如一个数组pre[i]表示截至截至i(包括)前i......
  • 数据结构 玩转数据结构 6-5 二分搜索树的查询操作
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13458 1重点关注1.1二分搜索树查询代码实现见3.1 2课程内容 3......
  • 两道二分
    因为前天做了一道spfa+二分的题目,没有看出来需要用二分,就想着先练一练二分的题目在洛谷题单里面的两道题目,虽然不太难,确实能起到训练二分的作用模版打的更熟了,对二分有了多......
  • 力扣-279-完全平方数
    有没有可能是个数学题保证一定能通过若干个完全平方数凑整,再不济可以11111111…我想到了动态规划的斐波那契数列,但似乎并不是一个线性dp…瞄评论,瞄到了“背包”,那这里应......
  • 力扣-152-乘积最大的子数组
    对于dp[i],如果nums[i-1]>0,dp[i-1]也>0,那就是dp[i-1]*nums[i-1]如果<0,>0,那就是nums[i-1]0,<0,那就是nums[i-1]<0,<0,那就是dp[i-1]*nums[i-1]同样参考最大子数和,还需......
  • 力扣 二叉树 算法+题目 整理
    二叉树基础包括三种遍历,建树和遍历的方法。二叉树遍历力扣144,94,145二叉树前中后序遍历使用递归或者迭代空间复杂度都是o(n),而通过morris遍历则可以达到o(1),其介绍......
  • 力扣1668(java&python)-最大重复子字符串(简单)
    题目:给你一个字符串 sequence ,如果字符串word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word的重复值为k。单词word 的最大重复值......
  • 二分查找Binary_Search
    二分查找与二分答案笔记二分查找Binary_Search-唔知叫咩emm-博客园(cnblogs.com)Binary_Search_int.cppBinary_Search_double.cpp基础理论二分查......