繁体   English   中英

二进制搜索最近值c#

[英]Binary Search Closest Value c#

我正在使用这种二进制搜索算法来查找我的数组中的项目。 我试图做到这一点,所以当我搜索程序中告诉我的数组中未出现的值时,它还会显示最近的项目在哪里

示例数组:(4,6,7,8,9)搜索5结果6、7。

每次我搜索数组中不是元素的东西时,它都会返回0或-1。 有人可以帮我吗,谢谢?

  public static double BinarySearch(double[] a, double item)
    {
        int first = 0;
        int last = a.Length - 1;
        do
        {
            int mid = first + (last - first) / 2;
            if (item > a[mid])
                first = mid + 1;
            else
                last = mid - 1;
            if (a[mid] == item)
                return mid;
        } while (first <= last);       
        return -1;
    }

假设您将在循环外部声明“ mid”并返回它? 代替-1?

当对数组进行排序并且未找到搜索值时,您将获得中间结果,该结果指向数组中与您的搜索值最接近的较低值。 搜索值上方的元素包含在a [mid + 1]中。 小变化:

public static double BinarySearch(double[] a, double item)
{
    int first = 0;
    int last = a.Length - 1;
    int mid = 0;
    do
    {
        mid = first + (last - first) / 2;
        if (item > a[mid])
            first = mid + 1;
        else
            last = mid - 1;
        if (a[mid] == item)
            return mid;
    } while (first <= last);
    return mid;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM