定義
在電腦科學中,二分法尋找(binary search)也叫折半尋找(half-interval search),又叫對數搜尋(logarithmic search)。這是一種在有序數組中尋找某一特定元素的搜尋演算法。 原理
搜尋過程從數組的中間元素開始。如果中間元素正好是要尋找的元素,則搜尋過程終止;如果某一特定的元素大於或者小於小於中間元素,那就在大於或者小於中間元素的那一半尋找,而且跟開始一樣也從中間元素開始比較。如果某一步驟數組為空白,則代表找不到。 特點
這種搜尋演算法每依次比較都使搜尋範圍縮小一般 注意
這種搜尋演算法用於有序數組中的尋找 應用
可直接用於在一個數組中進行元素的尋找,也可用於插入排序 範例程式碼 下面是一個二分法尋找:
/// <summary> /// 二分法尋找 /// </summary> /// <param name="arr"></param> /// <param name="key">要尋找的對象</param> public static int BinarySearch(int[] arr,int value) { int low = 0; int high = arr.Length - 1; while(low<=high) { int middle = (low + high) / 2; if (value == arr[middle]) { return middle;//如果找到了就直接返回這個元素的索引 } else if(value >arr[middle]) { low = middle + 1; } else { high = middle - 1; } } return -1;//如果找不到就返回-1; }
測試一下:
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int value = BinarySearch(arr, 4); Console.WriteLine(value);
結果: