C#二分查找算法

news/2024/11/4 6:08:05/

前言

二分查找算法是一种在有序数组中查找特定元素的搜索算法

实现原理

二分查找的实现依赖于以下几个关键步骤:

  1. 计算查找范围的中间索引。

  2. 比较中间索引处的值与目标值。

  3. 根据比较结果调整查找范围(左半部分或右半部分)。

  4. 重复上述步骤直到找到目标值或查找范围为空。

动图演示

看一看二分查找与顺序查找的动态对比图:

图片

代码实现

    public class 二分查找算法{/// <summary>/// 二分查找算法/// </summary>/// <param name="arr">arr是已排序的数组</param>/// <param name="target">target是要查找的目标值</param>/// <returns>目标值在数组中的索引,如果未找到则返回-1</returns>public static int BinarySearch(int[] arr, int target){int left = 0; // 定义左指针int right = arr.Length - 1; // 定义右指针while (left <= right){// 计算中间元素的索引int mid = left + (right - left) / 2;if (arr[mid] == target){// 如果中间元素等于目标值return mid; // 查找成功,返回索引}else if (arr[mid] < target){// 如果目标值小于中间元素,则在左半部分查找left = mid + 1;}else{// 如果目标值大于中间元素,则在右半部分查找right = mid - 1;}}// 未找到 target,返回-1return -1;}public static void BinarySearchRun(){int[] arr = { 1, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59 }; //注意:这里的数组是已排序的数组int target = 31; //需要要查找的目标值int result = BinarySearch(arr, target); //调用二分查找方法if (result == -1){Console.WriteLine("元素未找到");}else{Console.WriteLine($"元素找到,索引为:{result},值为:{arr[result]}");}}}

数据结构与算法实战入门指南

https://mp.weixin.qq.com/s/XPRmwWmoZa4zq29Kx-u4HA

参考文章

  • https://blog.csdn.net/Sunnyside_/article/details/114700193


http://www.ppmy.cn/news/1543404.html

相关文章

论文提交步骤 | 2024年第五届MathorCup大数据竞赛

2024年第五届MathorCup数学应用挑战赛—大数据竞赛于2024年10月25日下午6点正式开赛。 论文和承诺书、支撑材料&#xff08;可选&#xff09;及计算结果文档由各参赛队队长电脑登录下方报名主页提交&#xff1a; https://www.saikr.com/vse/bigdata2024 初赛作品提交截止时间为…

线性可分支持向量机代码 举例说明 具体的变量数值变化

### 实现线性可分支持向量机 ### 硬间隔最大化策略 class Hard_Margin_SVM:### 线性可分支持向量机拟合方法def fit(self, X, y):# 训练样本数和特征数m, n X.shape# 初始化二次规划相关变量&#xff1a;P/q/G/hself.P matrix(np.identity(n 1, dtypenp.float))self.q matr…

程序员工作七年,我踩过的那七个坑

作者&#xff1a;东东拿铁 引言 今天想聊聊&#xff0c;自己在7年工作中踩过坑的7件事情。 一、不会问问题 一杯茶一包烟&#xff0c;一个bug改一天。 程序员面对技术难题是非常正常的事情&#xff0c;谁还没有碰见问题束手无策的时候呢。 记得刚工作的时候&#xff0c;我…

机器人技术基础(4章逆运动解算和雅克比矩阵)

逆运动解算&#xff1a; 雅克比矩阵&#xff1a; 将动力学分析转向运动的物体 下图中的 n o y 反映了机器人的姿态矩阵&#xff0c; 最后一列 p 反应了机器人在空间中的位置&#xff1a;

YOLOv4和Darknet实现坑洼检测

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【MobileViT实现垃圾分类】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现mni…

【SpringCloud】06-Sentinel

1. 雪崩问题 一个微服务出现问题导致一系列微服务都不可以正常工作。 服务保护方案&#xff1a; 请求限流。线程隔离。 服务熔断 2. Sentinel 启动Sentinel java -Dserver.port8090 -Dcsp.sentinel.dashboard.serverlocalhost:8090 -Dproject.namesentinel-dashboard -ja…

Spring Cache-基于注解的缓存

Spring Cache 是 Spring 提供的缓存抽象框架&#xff0c;能够将数据缓存到内存或外部缓存中&#xff0c;减少数据库或远程服务的访问频率&#xff0c;从而显著提升应用性能。Spring Cache 通过注解的方式实现缓存逻辑&#xff0c;使用方便&#xff0c;支持多种缓存实现&#xf…

Python中除了matplotlib外还有哪些数据可视化的库?

matplotlib算是python比较底层的可视化库&#xff0c;可定制性强、图表资源丰富、简单易用、达到出版质量级别。 其它的可视化库诸如&#xff1a;seaborn、pyecharts、ggplot、plotnine、holoviews、basemap、altair、pyqtgraph、pygal、vispy、networkx、plotly、bokeh、geop…