C# 中的二分查詢
二分查詢適用於已排序的陣列。值比起始元素中間的元素。如果找不到相等的值,則除掉其中不包含該值的一半部分。以同樣的方式,搜尋另一半部分。
下面是我們陣列中的中間元素。現在我們假設需要找到 62,則需要除掉左側部分,然後搜尋右側部分:

這是二分查詢的複雜度:
| 最差情況下的執行效率 | O(log n) |
| 最優情況下的執行效率 | O(1) |
| 平均執行效率 | O(log n) |
| 最差情況下空間的複雜度 | O(1) |
示例
我們來看二分查詢的方法:
public static object BinarySearchDisplay(int[] arr, int key) {
int minNum = 0;
int maxNum = arr.Length - 1;
while (minNum <=maxNum) {
int mid = (minNum + maxNum) / 2;
if (key == arr[mid]) {
return ++mid;
} else if (key < arr[mid]) {
max = mid - 1;
}else {
min = mid + 1;
}
}
return "None";
}
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP