首页 > 其他分享 >升序数组的二分查找

升序数组的二分查找

时间:2023-12-26 12:37:02浏览次数:22  
标签:二分 下标 元素 查找 数组 升序

我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然 后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。

首先我们通过分析可以知道二分查找的本质就是循环,对于一个升序数组,

应先找到最小元素的下标和最大元素的下标。

升序数组的二分查找_二分查找

之后再找到中间元素的下标

升序数组的二分查找_二分查找_02

接着重复这个过程。

完整代码如下

升序数组的二分查找_升序_03





标签:二分,下标,元素,查找,数组,升序
From: https://blog.51cto.com/u_16271810/8981755

相关文章

  • java与算法基础(二) 二分查找
    二分查找基本算法用于查找已排列数组,且一般没有重复数左闭右开查找区间为[Left,Right),比较Left和Right中间的那个数和Target的。如果中间数大于target,将Left设为Middle-1;如果中间数小于target,将Right设为Middle。classSolution{publicintsearch(int[]num......
  • P7 二分分类
    逻辑斯蒂回归是一种二进制分类算法 比如说我们举个例子这样一个案例中,你需要输入图像,输出标签,识别判断这个图像是/不是一只猫(用0/1表示)在计算机中,怎么让计算机接受图片,或者说计算机只认识二进制语言,怎么让它看见这些图像数据??? 如果说你传入的图像是一张64像素位*64像素位的......
  • 一个看似简单的查找算法 —— 二分查找算法
    前言二分查找算法应该是非常常见的一个算法了,查找速度快,算法逻辑简单是大家对该算法的一个大致印象。相信有很多同学能够在很短的时间内写出一个二分查找算法,即便记不太清二分查找算法的逻辑,稍微搜一下,瞟一眼,就能迅速回忆起该算法的大致逻辑,然后迅速写出来该算法。但是,实际上二......
  • 二分——lower_bound&upper_bound写法
    底层实现#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lllower_bound(vector<ll>&nums,llx){ llleft=0; llright=nums.size()-1; while(left<=right) { llmid=left+(right-left)/2; if(x>nums[mid]) left=mid+1......
  • 二叉树的查找算法的实现与运用
    二叉树的查找算法的实现与运用这里我们需要运用到之前二叉树建立的知识点每一次调用Insert函数时,都会开辟一个BiNode类型的空间,同时递归调用。其次,我们在建立平衡二叉树时,当前节点的左结点小于该结点,当前节点的右结点大于该结点,所以,我们在递归之前添加了一个判断条件。最后,Inser......
  • wps js在指定区域查找关键字
    Workbooks.Item(sy112).Activate();//“关键字”所在的文件letrng=Rows.Item("3:4");//“关键字”所在行letc=rng.Find("关键字",undefined,xlValues);if(c!=null){ letfirstCol=c.Column;//将第1个获取的列号赋值给变量firstCol do{arr.push(c.Column);//将列号存入列表......
  • 2023秋季专题训练五(二分)F
    问题K:计算平均值最大子段可以想到的做法是先枚举区间长度,然后计算每一个符合的区间平均值,但是会超时(timeout),很明显是时间复杂度n^2考虑如何优化(当然一开始没想到,还是老师提醒了一波)(明明之前课上还做到过)(哭)如何在O(n)判断一个区间是否满足,除了前缀和加除法的方法,也可以将数......
  • C练习——二分法查找有序数组
    //使用二分法折半查找,每次查找少一半数据,效率高#include<stdio.h>intsubscript(chararr[],intx,inty){intleft=0;intright=x-1;while(left<=right){intmid=left+(right-left)/2;if(arr[mid]<y)......
  • class006 二分搜索【算法】
    class006二分搜索【算法】算法讲解006【入门】二分搜索code1有序数组中是否存在一个数字//有序数组中是否存在一个数字packageclass006;importjava.util.Arrays;//有序数组中是否存在一个数字publicclassCode01_FindNumber{ //为了验证 publicstaticvoidmain(......
  • P3386 【模板】二分图最大匹配
    原题链接洛谷题解很详细,自己写了些理解在代码注释里代码#include<bits/stdc++.h>usingnamespacestd;intatch[50005]={0};intvis[50005]={0};vector<int>G[505];intweiy(intnow)//让now在他的“仓库”里按顺序找下一个能连的右点,找得到返回1,找不到返回0{vis[n......