c++ - 计算数组 C++ 中相同数字的函数

标签 c++ arrays binary-search

我有这个函数,它应该计算在某个数组中出现了多少个相同数字的重复项。重要的是,这必须具有复杂性 O(logn)。 我在下面写了这个,但它没有正确计算重复项。 还有一件事,数字是从最低到最高排序的。

int CountElementsinFile(int *Arr, int num, int numOfD)
{
    int avg{}; 
    int inB = 0; 
    int inE = numOfD - 1; 
    int el{};
    while (inB <= inE)
    {
        avg = (inB + inE) / 2;

        if (Arr[avg] == num)
            el++;
            if (Arr[avg] > num)
                inE = avg - 1;
            else
                inB = avg + 1;
    }

    return el;
}

最佳答案

使用 std,你可以:

int CountElementsinFile(const int *a, int size, int value)
{
    const auto range = std::equal_range(a, a + size, value);
    return range.second - range.first;
}

关于c++ - 计算数组 C++ 中相同数字的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55142220/

相关文章:

Python 二进制搜索(最大迭代次数)

c++ - 对本周大师的理解 #67 : Double or Nothing

binary-search - 对于二进制搜索的实现,两者中哪一个更好?

c++ - 需要帮助为 std 字符串应用 MinGW 补丁,得到意想不到的结果

java - 操作数组上的字符串

javascript - jQuery "Meet the team"效果

将 char 数组复制到另一个 char 数组而不发生内存泄漏

python - python 中 std::lower_bound 和 std::upper_bound C++ 算法的等价物是什么?

c++ - 错误 : cannot convert 'void (CApp::*)()' to 'void (*)()' for argument '1' to 'void Mix_HookMusicFinished(void (*)())'

c++ - tr ("\302\261") 在Qt中是什么意思?