2017-04-12 43 views
-16

爲什麼你不能在這個數組上使用二進制搜索?
int A [10] = {4,5,6,2,8,1,-1,17};爲什麼不能在以下數組上使用二分搜索?

+6

因爲它沒有排序? – Cristy

+0

您需要先對其進行排序 – shash678

+0

您可以使用二分法搜索,而不是使用'operator <'。所有具有唯一值的數組都按至少一個比較運算符排序。我將把它作爲另一個練習,爲這些特定的9值找到一個可行的比較函數。 – MSalters

回答

3

在計算機科學中,二分查找也稱爲半區間查找,對數查找或二元砍,是一種搜索算法,用於在排序數組內查找目標值的位置。 Wikipedia 您使用的數組未被排序,因此二進制搜索不起作用。

0

首先你需要使用任何該分類機構

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); 
} 
1

Binary search需要的元素的有序集合。例如,如果使用C++ 11或更新版本,您可以輕鬆地對其進行分類:

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