当前位置: 首页 > news >正文

【数据结构】二分查找

  •  🚩 WRITE IN FRONT 🚩       

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、CSDN专家博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量8w+、个人社区人数累计4w+、全网访问量100w+ 🏅
  • 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
  • 📑 创作时间:2022 年 11 月 2 日 📅
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:数据结构_謓泽的博客-CSDN博客📃
  • 🙌 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩 

概述

        二分查找,也称为折半查找,是一种在有序数组中快速查找特定元素的算法。它的原理是通过将数组分成两半,并与目标元素进行比较,从而确定目标元素在哪一半中,然后再在该半部分继续进行二分查找,直到找到目标元素或确定目标元素不存在为止。

        注意,二分查找使用的场合是要在有序数组的条件下进行的。

题目内容

        在一个升序数组中查找指定的数值,找到了就返回下标,找不到就返回负一的值。

函数格式

int bin_search(int arr[], int left, int right, int key)
// arr 是查找的数组
//left 数组的左下标
//right 数组的右下标
//key 要查找的数字

代码

        说明:在这里我们一共有两种方式去对题目的要求进行实现。

        ① 遍历方法

        ② 二分查找方法

        所以:接下来謓泽都会用这两种方式带大家去实现。

#pragma warning(disable:6031)
#pragma message("二分查找法查找k的元素下标是否存在")
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
#if 1//注意:在数据结构当中二分查找的时间复杂度的算法是:O(logn)int k = 0;printf("请输入k的元素值:");scanf("%d", &k);int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int sz = sizeof(arr) / sizeof(arr[0]);int left = 0;int right = sz - 1;while (left <= right){int mid = (left + right) / 2;if (arr[mid] < k){left = mid + 1;}else if (arr[mid] > k){right = mid - 1;}else{printf("找到了,数组下标:%d,元素%d\n", mid, arr[mid]);break;}}if (left > right){printf("找不到!\n");}
#else// 遍历方式int i = 0;int k = 7;int flag = 0;int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){if (k == arr[i])	// 去比较下标{flag = 1;	// 找到了printf("下标:%d\n", arr[i]);}}if (flag == 0)printf("没找到!\n");
#endifreturn 0;
}

相关文章:

【数据结构】二分查找

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

读书笔记《网络是怎样连接的》

目录 第一章1.1 生成http请求消息输入网址URL解析URLURL中省略文件名的情况http的基本思路生成HTTP请求消息发送请求后收到响应 1.2 向DNS服务器查询Web服务器的IP地址IP地址的基本知识域名和IP地址并用的理由Socket库提供查询IP地址的功能通过解析器向 DNS 服务器发出查询解析…...

Java 设计模式一

Java 设计模式是软件开发中的一类解决方案&#xff0c;旨在解决常见的设计问题&#xff0c;提升代码的可维护性、可复用性和扩展性。它们通常基于一些经验和最佳实践&#xff0c;提供了解决问题的标准化方法。以下是常见的 Java 设计模式及其概述&#xff1a; 1. 创建型模式 (…...

SOME/IP服务接口

本系列文章将分享我在学习 SOME/IP 过程中积累的一些感悟&#xff0c;并结合 SOME/IP 的理论知识进行讲解。主要内容是对相关知识的梳理&#xff0c;并结合实际代码展示 SOME/IP 的使用&#xff0c;旨在自我复习并与大家交流。文中引用了一些例图&#xff0c;但由于未能找到原作…...

Java 生成 PDF 文档 如此简单

嘿&#xff0c;朋友&#xff01;在 Java 里实现 PDF 文档生成那可真是个挺有意思的事儿&#xff0c;今儿个就来好好唠唠这个。咱有不少好用的库可以选择&#xff0c;下面就给你详细讲讲其中两个超实用的库&#xff0c;一个是 iText&#xff0c;另一个是 Apache PDFBox。 用 iTe…...

深入探究 YOLOv5:从优势到模型导出全方位解析

一、引言 在计算机视觉领域&#xff0c;目标检测是一项至关重要的任务&#xff0c;它在自动驾驶、安防监控、工业检测等众多领域都有着广泛的应用。而 YOLO&#xff08;You Only Look Once&#xff09;系列作为目标检测算法中的佼佼者&#xff0c;一直备受关注。其中&#xff…...

【PoCL】运行 LLVM 中 pass 优化过程详解

PoCL 项目中调用 LLVM 的 Pass 对编译过程的优化至关重要。本博文以PoCL 开源项目源码为例,详细说明【PoCL】运行 LLVM 中 pass 优化过程 目录 0. 个人简介 && 授权须知1. pocl_llvm_run_pocl_passes 函数作用2. 禁止 “小网格 small grid” 工作组(workGroup)特化的…...

如何将使用unsloth微调的模型部署到ollama?

目录 一、将模型保存为gguf格式 二、下载llama.cpp 三、生成 llama-quantize 可执行文件 四、使用llama-quantize 五、训练模型 六、将模型部署到ollama 一、将模型保存为gguf格式 在你的训练代码 trainer.train() 之后添加&#xff1a; model.save_pretrained_gguf(&q…...

【测试】UI自动化测试

长期更新&#xff0c;建议关注收藏点赞&#xff01; 目录 概论WEB环境搭建Selenium APPAppium 概论 使用工具和代码执行用例。 什么样的项目需要自动化&#xff1f; 需要回归测试、自动化的功能模块需求变更不频繁、项目周期长&#xff08;功能测试时长&#xff1a;UI自动化测…...

SSM开发(二) MyBatis两种SQL配置方式及其对比

目录 一、MyBatis两种SQL配置方式 二、使用XML映射文件配置SQL语句 三、使用注解配置SQL语句 四、两种方式对比 总结 1、注解 2、XML配置 五、MyBatis多数据源的两种配置方式 参考 一、MyBatis两种SQL配置方式 MyBatis 提供了两种方式来配置SQL语句&#xff1a;注解&a…...

【Redis】在ubuntu上安装Redis

文章目录 提权搜索软件包安装修改配置文件ip保护模式配置密码 重新启动服务器使用 redis 自带的客户端来连接服务器 提权 先切换到 root 用户,su 命令切换到 root. 搜索软件包 使用 apt 命令来搜索 redis 相关的软件包 apt search redis 安装 使用 apt 命令安装 redisapt …...

JS-Web API -day06

一、正则表达式 正则表达式测试工具: http://tool.oschina.net/regex 1.1 正则表达式介绍与语法 正则表达式&#xff1a; 正则表达式&#xff08;Regular Expression&#xff09;是用于匹配字符串中字符组合的模式。在 JavaScript中&#xff0c;正则表达式也是对象。通常用来查…...

JS-Web API -day03

一、事件流 1.1 事件流与两个阶段说明 事件流 指的是事件完整执行过程中的流动路径 假设页面有个div标签&#xff0c;当触发事件时&#xff0c;会经历两个阶段&#xff0c;分别是捕获阶段、冒泡阶段 捕获阶段&#xff1a;Document - Element html - Elementbody - Element div…...

进程优先级

基本概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。 优先权⾼的进程有优先执⾏权利。配置进程优先权对多任务环境的linux很有⽤&#xff0c;可以改善系统性能&#xff1b;还可以把进程运⾏到指定的CPU上&#xff0c;这样⼀来&…...

c语言(转义字符)

前言&#xff1a; 内容&#xff1a; 然后记一下转义字符 \? 在书写连续多个问号时使用&#xff0c;防止他们被解析成三字母词 \ 用于表示字符常量 \\ 用于表示一个反斜杠&#xff0c;防止他被解析为一个转义序列符 \n 换行 \r …...

easyexcel读取写入excel easyexceldemo

1.新建springboot项目 2.添加pom依赖 <name>excel</name> <description>excelspringboot例子</description><parent> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId&…...

【人工智能数学基础篇】——深入详解矩阵分解:奇异值分解(SVD)与主成分分析(PCA)在数据降维与特征提取中的应用

目录 1. 引言 2. 矩阵分解概述 2.1 矩阵分解的意义 3. 奇异值分解&#xff08;SVD&#xff09; 3.1 定义与数学基础 3.2 SVD 的性质 3.3 SVD 在数据降维中的应用 3.4 示例代码&#xff1a;使用 SVD 进行图像压缩 3.5 结果分析 4. 主成分分析&#xff08;PCA&#xff0…...

ThreeJS示例教程200+【目录】

Three.js 是一个强大的 JavaScript 库,旨在简化在网页上创建和展示3D图形的过程。它基于 WebGL 技术,但提供了比直接使用 WebGL 更易于使用的API,使得开发者无需深入了解 WebGL 的复杂细节就能创建出高质量的3D内容。 由于目前内容还不多,下面的内容暂时做一个占位。 文章目…...

DC-DC稳压电源——实战(基于Ti5450芯片)基础知识篇(1)

一&#xff1a;基础知识-耦合 1&#xff09;去耦电容 &#xff08;1&#xff09;耦合与去耦 耦合&#xff1a;系统内部的各个部分之间存在相互依赖、相互影响、相互制约的情况。用人话说就是不同部分之间的相互影响。 去耦&#xff1a;自然就是消除不同部分之间的影响了。 &…...

pyrender 渲染mesh

目录 render_meshes函数 调用函数 render_meshes函数 def overlay_human_meshes(humans, K, model, img_pil, unique_colorFalse):# Color of humans seen in the image._color [color[0] for _ in range(len(humans))] if unique_color else color# Get focal and princpt …...

Kando测试框架完全指南:Mocha和Chai的终极使用技巧

Kando测试框架完全指南&#xff1a;Mocha和Chai的终极使用技巧 【免费下载链接】kando &#x1f338; Do things with utmost efficiency. 项目地址: https://gitcode.com/gh_mirrors/ka/kando Kando是一款跨平台的饼状菜单桌面工具&#xff0c;它为用户提供了高效、直观…...

GHelper完整指南:免费轻量级华硕笔记本性能控制工具终极教程

GHelper完整指南&#xff1a;免费轻量级华硕笔记本性能控制工具终极教程 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Str…...

史上最快破 10 万 Star!Claude Code Python 重写版震撼上线!

文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 史上最快10万Star项目 📒 📝 事件始末 🔧 项目架构 🗂️ 目录结构 ⭐ Rust工作区模块 🚀 快速开始 📦 Python版 🦀 Rust版 💡 核心特色 🎯 清洁室重写 🔄 AI辅助开发 📊 Rust性能优化 🌟 项目影响力 …...

基于SpringBoot的旅游网站管理系统

源码获取地址&#xff1a; 链接: https://pan.baidu.com/s/1Swe7JUSV7rRuBkagxRgL6g?pwdaufn提取码: aufn&#xff08;文件先保存到自己网盘&#xff0c;谨防文件丢失&#xff01;&#xff01;&#xff09; 该网站是一个旅游管理系统&#xff0c;旨在为用户提供便捷的旅游信息…...

Kintsugi AI心理健康筛查技术开源:审批困境与新应用契机

【导语&#xff1a;加利福尼亚初创公司 Kintsugi 开发从语音检测抑郁和焦虑迹象的 AI&#xff0c;因未获 FDA 批准即将关闭并开源技术。其技术有新应用可能&#xff0c;但也面临监管、滥用等问题。】AI语音筛查&#xff1a;心理健康评估新尝试过去七年&#xff0c;Kintsugi 致力…...

SDXL-Turbo在虚拟现实内容创作中的应用

SDXL-Turbo在虚拟现实内容创作中的应用 1. 引言 虚拟现实内容开发一直面临着一个核心痛点&#xff1a;高质量素材的制作既耗时又费力。传统的VR环境创建需要美术人员手动绘制纹理、设计贴图&#xff0c;一个简单的场景可能就需要数天甚至数周的工作量。 想象一下这样的场景&…...

用快马ai快速生成github入门演示项目,十分钟搞定代码托管原型

今天想和大家分享一个快速上手GitHub的小技巧——用InsCode(快马)平台的AI辅助功能&#xff0c;十分钟就能做出一个交互式GitHub入门演示项目。这个项目特别适合刚接触代码托管的新手&#xff0c;通过可视化操作理解Git核心概念。 项目设计思路 这个演示项目的核心是"学以…...

LFM2.5-1.2B-Thinking-GGUF压力测试与性能调优:寻找最佳并发参数

LFM2.5-1.2B-Thinking-GGUF压力测试与性能调优&#xff1a;寻找最佳并发参数 1. 为什么需要压力测试 当你把LFM2.5-1.2B-Thinking-GGUF模型部署上线后&#xff0c;最担心的问题可能就是&#xff1a;这个服务能承受多少用户同时访问&#xff1f;会不会在高并发时崩溃&#xff…...

终极文档下载神器:一键获取全网免费文档的完整指南

终极文档下载神器&#xff1a;一键获取全网免费文档的完整指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为了解决…...

GHelper:重构华硕笔记本硬件控制的颠覆式开源方案

GHelper&#xff1a;重构华硕笔记本硬件控制的颠覆式开源方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, …...