arrays - 查找大于排序数组给定键的最小数的索引,这两个函数返回相同的结果吗?

标签 arrays algorithm binary-search sorting sortedlist

给定一个已经排序的整数数组(非递减顺序),我们需要找到大于给定键的最小数字的索引,我写了两个函数,它们是相同的除了返回线。

lohi 指定低位和高位的索引,包括在内

int minimum_index_greater(int *a, int lo, int hi, int key) {
    int left = lo - 1;
    int right = hi + 1;

    while (left + 1 < right) {
        int mid = (left + right) / 2;

        if (a[mid] > key) right = mid;
        else              left = mid;
    }

    return right;    -------> function 1
    return left + 1; -------> function 2
}

第一个问题是它们是否正确(返回正确的值)?

第二个问题是,我假设在这种情况下两个函数是相同的,它们在每种情况下都返回相同的值。我很确定这一点。我对不对?请解释。

P/S : 当我在 Sphere Online Judge 上解决问题时.我需要找到这个值并解决问题,使用函数 1,我得到 97.72/100 分(我不知道为什么它不是 100),使用函数 2,我只得到 94.44。所以我猜问题出在这里

最佳答案

查看 upper_bound功能。它完全符合您的要求(简单的二进制搜索)。 Here你有一个很棒的教程。

关于arrays - 查找大于排序数组给定键的最小数的索引,这两个函数返回相同的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054042/

相关文章:

php - 如何在 PHP 中将 3 个或更多 ID 合并为 1 个 64 位 ID

c - 输入值创建二叉搜索树

c++ - 为什么这个线性和二进制搜索的基准代码不起作用?

PHP - 在多维数组中查找键

arrays - 从数据可能不存在的数组中获取元素

python - 使用DP解决 "Knapsack"

perl - 如何扩展二进制搜索迭代器以使用多个目标

arrays - 重新组合 Numpy 数组中的条目

arrays - react refs 数组

algorithm - gcd 算法在大 theta 符号方面的时间复杂度。