为什么不能在以下数组中使用二进制搜索?

时间:2017-04-12 11:03:48

标签: c++

为什么你不能在这个阵列上使用二进制搜索? int A [10] = {4,5,6,2,8,1,-1,17};

4 个答案:

答案 0 :(得分:3)

在计算机科学中,二分搜索(也称为半区间搜索,对数搜索或二进制搜索)是一种搜索算法,用于在排序数组中查找目标值的位置。 Wikipedia 您使用的数组未排序,因此二进制搜索不起作用。

答案 1 :(得分:1)

首先要进行二进制搜索,你必须对数组进行排序。

您可以找到文档和示例here

这是另一个例子:

#include <algorithm>    // std::binary_search, std::sort
#include <vector>       // std::vector

int main() {
    int A[10] = {4, 5, 6, 2, 8, 1, -1, 17};
    std::vector<int> v(std::begin(A), std::end(A));
    std::sort (v.begin(), v.end());
    int n = 2;
    // now you can use binary search
    bool foundN = std::binary_search (v.begin(), v.end(), n);
}

答案 2 :(得分:1)

Binary search需要排序的元素集合。例如,如果使用C ++ 11或更新版本,则可以轻松对其进行排序:

std::sort(std::begin(A), std::end(A)); // requires #include <algorithm>

答案 3 :(得分:0)

首先你需要使用任何排序机制对其进行排序