首页 > 编程语言 >C#二分查找算法

C#二分查找算法

时间:2024-12-14 11:32:39浏览次数:4  
标签:二分 arr C# int 算法 查找 目标值

前言

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

实现原理

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

  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,返回-1
			return -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]}");
			}
		}
	}

标签:二分,arr,C#,int,算法,查找,目标值
From: https://www.cnblogs.com/chenshibao/p/18605885

相关文章

  • C#经典算法面试题
    1.递归算法1.1C#递归算法计算阶乘的方法一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。原理:亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。 ///<summary......
  • C# 面试常见递归算法
    前言今天我们主要总结一下C#面试中常见递归算法。C#递归算法计算阶乘的方法一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。原理:亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义......
  • 【无人船】基于模型预测控制(MPC)对USV进行自主控制研究(Matlab代码实现)
    ......
  • 用于变分自动编码器 (VAE) 的 Copula 变分贝叶斯算法(Matlab代码实现)
    ......
  • Win11系统提示找不到WaaSMedicSvc.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个WaaSMedicSvc.dll文件(挑选合适的版本文件)......
  • AC 自动机
    写给自己看的。\(\mathrm{AC}\)自动机用在处理多个待匹配串的字符串匹配问题。首先建出字符集\(T\)的\(\mathrm{Trie}\)树\(T_t\),接着考虑类似\(\mathrm{kmp}\)的思想,令一个节点\(u\)的失配指针\(fail_u\)表示从根到\(u\)组成的字符串\(S\)的最长后缀,满足是......
  • American dreams in China
     AmericandreamsinChinaThisisafilmthattellsastoryofthreeuniveitystudentsChenddongqingMengxiaojunandWangyanginYanuniveity.Theywereclassmatesatthattime,allofthemaspiringtostudyingoveeaintheUS.Eachofthemstrovetoachiev......
  • AIGC绘画设基础入门|Stable diffusion 最新版本来袭,安装包4.8.7升级版来了!
    本期给大家带来了最新的StableDiffusion2024最新4.8.7版本工具包包含安装教程、各种主流模型和最新AI学习课程无需部署安装,解压就可以直接使用!!!让你快速上手想体验的伙伴赶紧来试试吧StableDiffusion是以文本生成图像的AI工具,也是目前唯一一款能部署在家用电脑上......
  • 证明 $ \sum_{m=0}^n C(m, n) = 2^n $
    我们来证明以下公式:\[\sum_{m=0}^nC(m,n)=2^n.\]证明思路:这个公式的含义是:从$n$个元素中选取$m$个元素的组合数的总和,随着$m$从0到$n$变化,等于$2^n$。我们将用递推的方法来证明这个等式。1.组合数的加法性质:首先,我们知道组合数$C(m,n)$表示从......
  • 【LeetCode: 402. 移掉 K 位数字 + 单调栈】
    ......