二分查找法(递归和非递归算法)
二分查找法(递归算法)
/// <summary> /// 二分查找法(递归算法) /// 此算法的前提是arry数组为有序数组。是排好序的。 /// </summary> /// <param name="arry">在哪个数组中查找</param> /// <param name="number">要查找 的数</param> /// <param name="star">从数组的哪个坐标下始</param> /// <param name="end">到数组的哪个坐标结束</param> public static int a = 0; public static void bingaryserch1(int[] arry, int number, int star, int end) { a++;//记录查询 的次数 if (star > end) { Console.WriteLine("不存在此数。共查询了{0}次", a); return; } int middle = Convert.ToInt32((star + end) / 2); if (number == arry[middle]) { Console.WriteLine("存在此数,其下标为:{0}共查询了{1}次", middle, a); } else if (number < arry[middle]) { bingaryserch1(arry, number, star, middle - 1); } else if (number > arry[middle]) { bingaryserch1(arry, number, middle + 1, end); } }
二分查找法(非递归算法)
/// <summary> /// 二分查找法(非递归算法) /// 此算法的前提是arry数组为有序数组。是排好序的。 /// </summary> /// <param name="arry">在哪个数组中查找</param> /// <param name="number">要查找 的数</param> public static void BinarySearch(int[] iArrary, int number) { int star = 0;//起下标 int end = iArrary.Length - 1;//终下标,最后的下标,数组长度-1 bool flag = false; int count = 0;//查找的次数 while (star <= end) { count++; int mid = Convert.ToInt32((star + end) / 2);//取得中间的下标 if (number == iArrary[mid]) { Console.WriteLine("存在此数,下标为:{0};共查找了{1}次。", mid, count); flag = true; return; } else if (number < iArrary[mid]) { end = mid - 1; } else { star = mid + 1; } } if (!flag) { Console.WriteLine("不存在此数。共查找了{0}次。", count); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构