爲什麼你不能在這個數組上使用二進制搜索?
int A [10] = {4,5,6,2,8,1,-1,17};爲什麼不能在以下數組上使用二分搜索?
-16
A
回答
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>
相關問題
- 1. 爲什麼我們不能在跳轉搜索中使用二分搜索而不是線性搜索?
- 2. 在Java中,爲什麼在使用二分搜索搜索數組時返回負數?
- 3. 在.NET/C#上下文中,什麼是二進制搜索以及如何/爲什麼可以使用它?
- 4. 爲什麼我的程序不能在數組中搜索?
- 5. 如何在二維數組中使用二分搜索?
- 6. 爲什麼不使用遞歸進行二進制搜索排序的數組
- 7. 爲什麼用這種方式計算二分搜索索引?
- 8. 爲什麼我不能在Java數組上向下計數?
- 9. 爲什麼一個符號不能在二進制文件上搜索?
- 10. 爲什麼我不能在forEach函數數組上使用Function.prototype.call?
- 11. 爲什麼這個遞歸搜索不能進入第二級?
- 12. 使用二分搜索在排序數組中搜索鍵的前輩
- 13. 爲什麼bash在爲數組的一部分搜索數組時返回true?
- 14. 爲什麼我的datatables.js上的搜索功能不起作用?
- 15. 爲什麼我不能在window.location上搜索?
- 16. 使用二分搜索猜數
- 17. 爲什麼二進制搜索樹?
- 18. 使用字符串數組而不是int數組實現二分搜索
- 19. 在字符串數組上實現二分搜索
- 20. 爲什麼在搜索整數時不要附上數字?
- 21. (爲什麼)在這種情況下MySQL不能使用索引?
- 22. 爲什麼我的遞歸數組搜索不能在這個數組數據上工作?
- 23. 爲什麼會在自我平衡二叉搜索樹上使用堆?
- 24. linux:爲什麼我不能搜索/ sys/class但我可以搜索/ sys
- 25. 爲什麼鮑爾的搜索功能不區分大小寫?
- 26. 爲什麼一些搜索欄不能使用Python請求?
- 27. 爲什麼不能在IE上使用?
- 28. 爲什麼不能在Firefox上使用?
- 29. 爲什麼不能int.TryParse解析數字分組(但double.TryParse可以)?
- 30. 二元搜索樹刪除不起作用,爲什麼?
因爲它沒有排序? – Cristy
您需要先對其進行排序 – shash678
您可以使用二分法搜索,而不是使用'operator <'。所有具有唯一值的數組都按至少一個比較運算符排序。我將把它作爲另一個練習,爲這些特定的9值找到一個可行的比較函數。 – MSalters