2.3 二分搜索技术

二分搜索算法是运用分治策略的典型例子。给定己排好府的 n个元素a10:n-1],现要在
这n个元素中找出一特定元素3。首先较容易想到的是用顺序搜索方法,逐个比较a10:1-1]
中元素,直至找出元素,或搜索遍整个数组后确定,不在其中。这个方法没有很好地利用n
个元素已排好序这个条件,因此在最坏情况下,顺序搜索方法需要 O(1次比较。
二分搜索方法充分利用了元素间的次序关系,采用分治策略,可在最坏情況下用 O(ogn)
时间完成搜索任务。二分搜索算法的基本思想是,将n个元素分成个数大致相同的两半,取
aln/21与x 作比较。如果x-aln/2],则我到x,算法终止;如果x<ain/2],则只在数组。 的左
半部继续搜索 3;如果saln/2],则只在数组a 的右半部继续搜索x。具体算法可描述如下:
template<class Type>
int BinarySearch(Type a[],const Type& x,int n)
{//在a[0]<=a[1]<=...<=a[n-1]中搜索x//找到x时返回其在数组中的位置,否则返回-1int left=0; int right=n-1;while(left<=right){int middle=(left+right)/2;if(x==a[middle]){return middle;}if(x>a[middle]){left=middle+1;}elseright=middle-1;}return-1;//未找到x
}容易看出,每执行一次算法的 while 福环,待搜索数组的大小减小一半。因此,在取多
情况下,whie 循环被执行了 0(o 2)次。循环体肉运算需要 Q()时间,因此整个算法在最动
情况下的计算时间复杂性为 Ologn)。
三分搜索算法的思想易手理解,但是要写一个正确的二分搜索算法也不是一件简单的
事。Knuth在他的著作 “The Art of Coroputer Prograraming : Sorting and Searching”中提到,
第一个二分搜素算法早在 1946年就出现丁,但是第一个完全正确的二分搜索算法直到1946年才出现。
总结后期还会更新,课程太紧后面会改进这篇文章,还有所有需要改进的文章

相关文章:
2.3 二分搜索技术
二分搜索算法是运用分治策略的典型例子。给定己排好府的 n个元素a10:n-1],现要在这n个元素中找出一特定元素3。首先较容易想到的是用顺序搜索方法,逐个比较a10:1-1]中元素,直至找出元素,或搜索遍整个数组后确定,不在其…...
RWEQ模型的土壤风蚀模数估算、其变化归因分析
土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2,占国土总面积的16.7%,严重影响这些地区的资源开发和社会经…...
学习streamlit-1
Streamlit A faster way to build and share data apps streamlit在几分钟内就可以将数据脚本转换为可共享的web应用程序,并且是纯python编程,无需前端经验。 快速开始 streamlit非常容易上手,运行demo只需2行代码: pip install…...
GPS定位知识介绍
GPS定位和网络定位 GPS定位需要卫星参与,设备借助搜到的卫星讯号,计算出设备的位置。网络定位是指利用基站、WIFI MAC,获取一个粗略的位置。3D定位和2D 定位 3D一般是指使用至少4颗以上卫星完成的定位。2D一般使用3颗卫星完成的定位过程。...
【Linux】理解Linux环境变量
🍎作者:阿润菜菜 📖专栏:Linux系统编程 初识环境变量 什么是环境变量 我们平常所用的Linux指令其实也是可执行程序,和我们自己写的二进制程序没什么两样,那么为什么我们在执行自己的程序的时候需要加上 ./…...
ISCSI块存储-集群
ISCSI块存储-集群 1、ISCSI概述 ISCSI与SCSI原理对比 底层都是硬盘 ISCSI第二层就是通过gateway/网络获取–>SCSI:是直连获取 常见的用于ISCSI服务的网络拓扑类型 SAN:Storage Area Network:存储区域网络; 多采用告诉光纤…...
11.Maxwell 部署
Maxwell 部署 一、环境准备 1、确保服务器上已经安装好了zookeeper、kafka、MySQL软件; (1)启动zookeeper: /usr/app/zookeeper3.4/bin/zkServer.sh start(2)启动三台主题的kafka 启动:bin/kafka-serv…...
一文速学-GBDT模型算法原理以及实现+Python项目实战
目录 前言 一、GBDT算法概述 1.决策树 2.Boosting 3.梯度提升 使用梯度上升找到最佳参数 二、GBDT算法原理 1.计算原理 2.预测原理 三、实例算法实现 1.模型训练阶段 1)初始化弱学习器 2)对于建立M棵分类回归树: 四、Python实现 …...
前端——2.HTML基本结构标签
这篇文章我们从0来介绍一下HTML的相关标签内容 目录 1.HTML语法规范 1.1基本语法概述 1.2标签关系 2.HTML的基本结构标签 2.1第一个HTML网页 2.2基本结构标签总结 1.HTML语法规范 下面,我们来看一下HTML的语法规范的内容 1.1基本语法概述 首先,…...
OAK深度相机使用不同镜头和本地视频流进行模型推理
编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…...
[项目] Boost搜索引擎
目录 1.项目相关背景 2.项目宏观原理 3.技术栈和项目环境 4.正排索引&&倒排索引 5.去标签与数据清洗 6.构建索引模块Index 6.1正排索引 6.2 建立倒排 jiebacpp使用 建立分词 7.搜索引擎模块Searcher Jsoncpp -- 通过jsoncpp进行序列化和反序列化 处理Cont…...
解决新版QGIS找不到Georeferencer插件
目录1. 问题分析1.1 去 Raster 找,没找到1.2 去插件搜,未搜到1.3 插件库里也搜不到2. 解决办法在 QGIS 3.30中,按常规办法,找不到 Georeferencer插件,它并没有被安装,在库中也找不到它, 请问问题…...
c---冒泡排序模拟qsort
一、冒泡排序 二、冒泡排序优化排各种类型数据 文章目录一、冒泡排序二、冒泡排序优化排各种类型数据冒泡排序 冒泡排序原理:两两相邻元素进行比较 初级版 void bulle_sort(int* a, int sz) {int i 0;for (int i 0; i < sz-1; i){int j 0; for (j 0; j…...
Java知识复习(十四)JS
1、数据类型 基本数据类型:null、undefinde、boolean、string、number、symbol(ES6新增)引用数据类型:Function、Array、Object、Map和Set(ES6新增) 2、let、var和const的区别 var定义的变量,…...
代码随想录刷题-数组-移除元素
文章目录写在前面习题我的想法暴力解法双指针写在前面 本节对应代码随想录中:代码随想录 习题 题目链接: 27. 移除元素- 力扣(LeetCode) 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素&a…...
聚观早报 |拼多多跨境电商业务正式登陆澳洲;中国加快6G网络研发
今日要闻:拼多多跨境电商业务正式登陆澳洲;全球自动驾驶公司排名特斯拉垫底;中国将加快 6G 网络研发;B站再次“崩”上热搜!已闪电修复;微软将必应AI聊天每次对话上限增加至8条拼多多跨境电商业务正式登陆澳…...
MDK Keil5 创建Stm32工程-理论篇(这里以Stm32F103Zet6为例)
一、文件夹创建与文件说明整个工程可以粗略的划分为几个文件夹:BSP底层驱动比如GPIO\Timer等驱动文件CMSIS内核相关的文件Firmware生成的固件下载文件Mycode用户编写的相关文件,主要编写的文件都在这个文件夹里Project工程文件startup芯片启动文件STM32F…...
应届大学生学什么技术好?哪些技术适合年轻人?
到了毕业季,应届大学生面临的就是就业问题,很多专业的大学生难以找到对口的工作,或是不得已随便就业,或者是学个技术高薪就业,那么,问题来了,应届大学生学什么技术好?哪些技术适合年…...
车企数据分类分级的实践指南出炉!“数据安全推进计划”发布,奇点云参编
日前,“数据安全推进计划”(DSI)正式发布《智能网联汽车数据分类分级实践指南》(下文简称“指南”),旨在以合规为主要导向,明确智能网联汽车数据分类分级的方法论,为数据全生命周期的…...
Nginx学习 (2) —— 虚拟主机配置
文章目录虚拟主机原理域名解析与泛域名解析(实践)配置文件中ServerName的匹配规则技术架构多用户二级域名短网址虚拟主机原理 为什么需要虚拟主机: 当一台主机充当服务器给用户提供资源的时候,并不是一直都有很大的用户量&#…...
3大实战场景解析:如何用FakeLocation实现Android应用级GPS伪装
3大实战场景解析:如何用FakeLocation实现Android应用级GPS伪装 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation FakeLocation是一款基于Xposed框架的Android位置模拟工…...
「码动四季·开源同行」golang:负载均衡如何提高系统可用性?
负载均衡能够将大量的请求,根据负载均衡算法,分发到多台服务器上进行处理,使得所有服务器负载都维持在高效稳定的状态,以提高系统的吞吐量。此外,多个服务实例组成的服务集群,消除了单点问题,当…...
新手福音:用快马AI理解ER图,从零开始设计图书馆数据模型
作为一个刚接触数据库设计的小白,我最近被ER图的各种符号和逻辑关系搞得晕头转向。直到发现了InsCode(快马)平台,用它的AI辅助功能尝试做了一个图书馆管理系统的ER图,整个过程简直像开了挂。下面分享我的学习笔记,希望能帮到同样入…...
打字侠全面支持三大五笔输入法:初学者快速上手指南
1. 五笔输入法:为什么值得初学者投入时间? 在拼音输入法大行其道的今天,很多初学者可能会疑惑:为什么要花时间学习看起来更复杂的五笔输入法?其实答案很简单——效率。我十年前刚开始接触五笔时也有同样的困惑…...
ComfyUI翻译节点终极指南:如何选择最适合你的AI创作翻译工具
ComfyUI翻译节点终极指南:如何选择最适合你的AI创作翻译工具 【免费下载链接】ComfyUI_Custom_Nodes_AlekPet Custom nodes that extend the capabilities of Comfyui 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_Custom_Nodes_AlekPet 在AI图像生…...
3个核心功能让Windows优化变得如此简单:Winhance中文版深度体验
3个核心功能让Windows优化变得如此简单:Winhance中文版深度体验 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Wi…...
3个技巧让Poppins字体为你的设计项目增添国际范儿
3个技巧让Poppins字体为你的设计项目增添国际范儿 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 还在为多语言项目找不到统一风格的字体而烦恼吗?Poppins这款现代几…...
Qwen2.5-VL-7B-Instruct开源大模型:支持中文优先的多模态理解部署方案
Qwen2.5-VL-7B-Instruct开源大模型:支持中文优先的多模态理解部署方案 1. 项目概述 Qwen2.5-VL-7B-Instruct是一款开源的视觉-语言多模态大模型,特别针对中文场景进行了优化。该模型能够同时处理图像和文本输入,实现跨模态的理解与生成任务…...
ResNet50人脸重建作品集:cv_resnet50_face-reconstruction在艺术创作中的人脸风格迁移底图生成
ResNet50人脸重建作品集:cv_resnet50_face-reconstruction在艺术创作中的人脸风格迁移底图生成 1. 项目介绍与核心价值 cv_resnet50_face-reconstruction 是一个基于ResNet50架构的人脸重建项目,专门为艺术创作和设计工作提供高质量的人脸底图生成服务…...
Android USB串口通信终极指南:智能家居物联网项目实战
Android USB串口通信终极指南:智能家居物联网项目实战 【免费下载链接】usb-serial-for-android Android USB host serial driver library for CDC, FTDI, Arduino and other devices. 项目地址: https://gitcode.com/gh_mirrors/us/usb-serial-for-android …...
