算法導論3-二分查找_某年某月_新浪博客

本文详细解析了二分查找算法的实现过程,包括初始化、循环条件、中间元素判断及更新边界等关键步骤,展示了如何在有序数组中高效查找目标元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//二分查找
        int efcz(int[] a, int goal, out int k)
        {
            int time1 = 0;
            //检测初始时不变式的真值  
            if (a.Length == 0)
            {
                k = 0;
                return -1;
            }

            //准备循环  
            int l = 0;//数组左端下标  
            int r = a.Length - 1;//数组右端下标  
            int m; //数组中间下标  
            //循环开始  
            while (r >= l)//r>=l就是不变式,代表数组中有元素  
            {
                time1++;
                m = (r + l) / 2; //计算中间位置  
                if (a[m] == goal)   //分支1,中间元素是目标元素
                {
                    k = time1;
                    return m;        //则返回  
                }
                else if (a[m] > goal)  //分支2,中间元素大于目标元素 
                {
                    r = m - 1;          //把数组右端标志放到m的前面一个元素
                }
                else            //分支3,中间元素小于目标元素
                {
                    l = m + 1;//把数组左端标志放到m的后面一个元素
                }

            }
            k = time1;
            return -1;  //运行到这里表示没有找到目标元素 
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值