二分查找算法(Binary Search)的实现

本文探讨了二分查找算法在已排序数组中的应用,其时间复杂度为O(lgn)。在实现过程中,特别强调了迭代实现时需要注意的边界条件:避免整数溢出和选择合适的比较操作。提供了迭代版本的二分查找代码示例,并引用了相关参考资料。
摘要由CSDN通过智能技术生成

用二分查找在已排序的数组中查看该数组是否含有一个特定的值是非常快速的,时间复杂度为O(lgn). 二分查找思想很简单,但是实现的时候会在边界条件上出现一些意想不到的问题。 现贴出自己写的程序,供大家参考。

第一个实现是基于迭代方式:

/// <summary>
/// implement Binary Search algorithm through iteration approach.
/// </summary>
/// <param name="array">a sorted array</param>
/// <param name="key">key value </param>
/// <returns>the position of the key in the array. If this key is not found, return -1</returns>
public int BinarySearchIteration(int[] array, int key)
{
    int begin = 0;
    int end = array.Length - 1;
    while (begin <= end)
    {
        int mid = begin + (end - begin) / 2;
        if (array[mid] > key)
        {
            end = mid - 1;
        }
        else if (array[mid] < key)
        {
            begin = mid + 1;
        }
        else
        {
            return mid;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值