二分查找法(递归和非递归算法)

二分查找法(递归算法)

 

复制代码
        /// <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); }
        }
复制代码

 

 

 

 

posted @   闲潭梦落花  阅读(976)  评论(0编辑  收藏  举报
编辑推荐:
· 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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示