查找 二分查找 (终极巩固)

news2025/4/5 0:39:11

二分条件:

        1)  序列有序    2)支持随机访问

二分思想:

大体思想是二分之后如果目标值在左侧,则中间包括右边区间所有pass掉

                right = mid - 1;

                        目标在右侧,则中间包括左边所有pass

                left = mid + 1;

注意点 left <= right

只需注意存在left 与 right 相等情况

bool Serch_Binary(vector<int> nums, int target)
	int left = 0;
	int right = nums.size();
	while(left <= right)
	{
		int mid = left + (right-left)/2;
		if(target < nums[mid])
			right = mid - 1;
		else if(target > nums[mid])
			left = mid + 1;
		else
			return true;
	}
	return false;
 } 

 CSDN周赛第二十五期查找整数

一个有序数组,  2 3 4 4 4 4 7 9 23

返回target 目标值下标,如果target有重复,返回最大的下标。

#include<iostream>
using namespace std;
#include<vector>

int main()
{
    int n, target;
    cin>>n>>target;
    vector<int> nums(n);
    for(int &e : nums)
        cin>>e;
    int begin = 0;
    int end = n-1;
    int mid = -1;
    while(begin<=end)	// 二分查找target位置 
    {
        mid = begin+((end-begin)/2);
        if(target < nums[mid])
            end = mid-1;
        else if(target > nums[mid])
            begin = mid+1;
        else
            break;
    }
    if(nums[mid]!=target)
    {
        cout<<-1<<endl;
        return 0;
    }
    end = n-1;
    begin = mid;
    while(begin <= end)	// 二分查找target最右边 
    {
        mid = begin+((end-begin)/2);
        if(mid == n-1)break;
        if(target==nums[mid] && target != nums[mid+1])
            break;
        else if(target == nums[mid] && target == nums[mid+1])
            begin = mid+1;
        else if(target != nums[mid])
            end = mid-1;
    }
    cout<<mid<<endl;
}

1、二分查找中的数据元素需要满足顺序存储结构,并且有序,因为二分查找需要随机读取,所以不能使用链表

 2、查找次数公式 log(N)/log(2)

 3、经典查找比较题

 4、分块查找——二分与顺序查找的优化(块内无序,快间有序)

 5、对于有N个元素的顺序表,二分查找次数的上界为logn+1

log (100) 6.65  最小次数为 6+1 = 7;

 6、平均比较次数为

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/198001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Fiddler抓包工具教学,获取公众号(pc客户端)数据

前言 今天来教大家如何使用Fiddler抓包工具&#xff0c;获取公众号&#xff08;PC客户端&#xff09;的数据。 Fiddler是位于客户端和服务器端的HTTP代理&#xff0c;是目前最常用的http抓包工具之一。 开发环境 python 3.8 运行代码pycharm 2021.2 辅助敲代码requests 第三方…

VS2022 开发Qt之修改软件图标

开发环境本次实验使用的开发环境是win10 64位系统 IDE使用VS2022,Qt版本是Qt5,15.写博客背景最近再练习使用VS开发Qt,到修改软件图标的事情.在网上搜索了一番大部分修改图标的都是基于Qt自带的编译器,由于本人使用的VS的IDE和自带的编译器设置方法有所不同,在一番查找实验后还整…

【论文学习】YOLOv1-YOLOv4

文章目录You Only Look Once,Unified ,Real-Time Object DetectionAbstractIntroductionUnified DetectionNetwork DesignTrainingInferenceLimitations of YOLOComparison to Other Detection SystemsYOLO9000:Better,Faster,StrongerAbstractIntroductionBetterBatch Normali…

【C++之类和对象】日期类的实现

目录前言一、日期类的基本样式二、构造函数三、拷贝构造函数四、赋值运算符重载五、日期比较1. 判断一个日期是否小于另一个日期2. 判断一个日期和另一个日期是否相等3. 判断一个日期是否小于等于另一个日期4. 判断一个日期是否大于另一个日期5. 判断一个日期是否大于等于另一个…

独孤九剑xss通关教程

独孤九剑xss通关教程 独孤九剑第一式&#xff1a; 这里过滤了 () 构造payload&#xff1a; ?data"><svg><script>%26%23x65%3B%26%23x76%3B%26%23x61%3B%26%23x6c%3B%26%23x28%3B%26%23x6c%3B%26%23x6f%3B%26%23x63%3B%26%23x61%3B%26%23x74%3B%26%23…

开门红,农民大衣哥兔年第一条祝福,为何在百万艺人中选择杨语莲

俗话说&#xff1a;人逢喜事精神爽。这句话用到农民歌唱家大衣哥身上&#xff0c;就再贴切不过了&#xff0c;因为在新年即将来临之际&#xff0c;他的儿子小伟又一次结婚了。大衣哥是一个非常接地气的明星&#xff0c;这些年来他无绯闻不炒作&#xff0c;堪称为娱乐圈的楷模&a…

开学季,送初三学生什么礼物最实用?2023学生护眼台灯分享

春节的新学期即将到来&#xff0c;送给初中孩子什么礼物比较好呢&#xff0c;还是要对学习有所帮助的&#xff0c;还需要培养孩子的兴趣&#xff0c;在挑选礼物时&#xff0c;也是斟酌了很久&#xff0c;面对现在很多孩子的有近视问题&#xff0c;在我国的近视人数达到7亿人&am…

java面试题(十一)IO流篇

2.21 请介绍TreeMap的底层原理 参考答案 TreeMap基于红黑树&#xff08;Red-Black tree&#xff09;实现。映射根据其键的自然顺序进行排序&#xff0c;或者根据创建映射时提供的 Comparator 进行排序&#xff0c;具体取决于使用的构造方法。TreeMap的基本操作containsKey、g…

三维重建——商汤NeuralRecon算法详解与论文解读

论文地址:https://arxiv.org/abs/2104.00681 1.三维重建任务概述 三维重建,就是将2D的图片信息重建为3D的信息。应用领域广泛。可以应用于原型设计、虚拟现实等。 2.三维重建基础 (1) 相机成像 相机成像一般是小孔成像的原理,f就是焦距,o就是光圈;右图为光圈大小对清晰…

【多尺度注意力的轻量化图像超分辨率】

MSAR-Net: Multi-scale attention based light-weight image super-resolution &#xff08;MSAR-Net&#xff1a;基于多尺度注意力的轻量化图像超分辨率&#xff09; 近年来&#xff0c;单幅图像超分辨率&#xff08;SISR&#xff09;技术在视频和图像处理领域得到了广泛的应…

Python基础语法预习,开学查漏补缺

嗨害大家好鸭~我是小熊猫 Python3 基础语法 Python学习资料电子书 点击此处跳转文末名片 编码 默认情况下&#xff0c;Python 3 源码文件以 UTF-8 编码&#xff0c; 所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码&#xff1a; # -*- coding: cp-125…

(HR职场)什么是计划能力?如何提高计划能力?

不论是学习还是工作&#xff0c;光靠努力是不行的&#xff0c;还得有计划&#xff0c;有周密的部署&#xff0c;懂得按计划做事情的人&#xff0c;不仅可以高效率地完成工作&#xff0c;还能在枯燥的工作中寻找到乐趣。这就是做计划的意义和必要性。当然光有计划也不行&#xf…

ArcGIS基础:将多个面要素融合成一个多边形面要素操作

操作目标&#xff1a;有多个多边形要素&#xff0c;并且字段属性没有统一的&#xff0c;可以采用以下两种办法融合成一个面要素。 如下所示&#xff0c;是对被选中的高亮数据进行处理的。 下面介绍第一种方法&#xff1a; 保持数据选中状态&#xff0c;找到【地理处理】下的…

Codeforces Round #849 (Div. 4) D Distinct Split

题目&#xff1a;大概翻译&#xff1a;让我们把一个字符串x的f(z)函数表示为该字符串包含的不同字符数。例如&#xff0c;f(abc)3。f(bbbb) 1, 和 f(babacaba) 3. 给定一个字符串s&#xff0c;将其分成两个非空字符串a和b&#xff0c;使f(a)f(b)为最大可能。换句话说&#xf…

2023软考软件设计师易混淆知识点~(7)

将2023上半年软考《软件设计师》易混淆知识点&#xff0c;分享给大家&#xff0c;快来跟着一起打卡学习吧&#xff01;--<<<点击链接加入群聊【软考学习交流群】>>>易混淆点 :对称加密和非对称加密1、对称加密技术:KeKd;加密解密共用一个密钥;特点:加密强度不…

python设计模式-适配器设计模式,装饰器设计模式

适配器设计模式 适配器模式可用作两个不兼容接口之间的桥梁。 这种类型的设计模式属于结构模式&#xff0c;因为此模式结合了两个独立接口的功能。 这种模式涉及一个类&#xff0c;它负责连接独立或不兼容接口的功能。 一个现实的例子是读卡器&#xff0c;它是存储卡和笔记本电…

超多免费API接口分享

分享一下近段时间在网上看的超多免费API接口&#xff0c;赶紧收藏起来吧&#xff01; 一、APISpace 为超过100 万开发者提供专业的 API 服务&#xff0c;包括 API 管理、测试、访问控制等功能&#xff0c;让您无忧探索广阔的API世界~所有接口提供免费试用 https://www.apisp…

【最坏贪心】代码源每日一题div1 排列 2023.02.03

排列 - 题目 - Daimayuan Online Judge今天牛牛完结撒花辣&#xff01;但是我还没补完题&#xff0c;感觉这几场rk都差不多&#xff0c;但是总体来说感觉签到签的有点困难&#xff0c;然后好不容易开到算法题&#xff0c;算法的题也最多只能出一题然后后面这几天除了vpCF&#…

现在都这么拽吗?面试一个工作4年的测试工程师,连自动化基础都搞不清楚,还反过来怼我....

年后招聘黄金期&#xff0c;我们公司也开始大量招人了&#xff0c;我这次是公司招聘的面试官之一&#xff0c;主要负责一些技术上的考核&#xff0c;这段时间还真让我碰到了不少奇葩求职者 昨天公司的HR小席刚跟我吐槽&#xff1a;这几个星期没有哪天不加班的&#xff01;各种…

代码随想录 day55动态规划 回文子串

代码随想录 day55动态规划 回文子串 题647 回文子串 动态规划解法&#xff1a; 1&#xff0c;确定dp数组以及下标的含义 对于绝大多数题目来说&#xff0c;题目求什么dp数组就定义为什么&#xff0c;但此题如果定义&#xff0c;dp[i] 为 下标i结尾的字符串有 dp[i]个回文串的…