定义
在计算机科学中,二分法查找(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);
结果: