本文共 1360 字,大约阅读时间需要 4 分钟。
二分查找:给定数组是有序的,给定一个key值。每次查找最中间的值,如果相等,就返回对应下标,如果key大于最中间的值,则在数组的右半边继续查找,如果小于,则在数组左半边查找,。最终有两种结果,一种是找到并返回下标,第二种是没找到
(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。(2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。
(3)如果某一步数组为空,则表示找不到目标元素。
static int BinSearch(int value, int[] array) { int low = 0; int high = array.Length - 1; while (low<=high) { int mid = (low + high) / 2; if (array[mid]==value) { return mid; } else if (array[mid]>value) { high = mid - 1; } else { low = mid + 1; } } return -1; }
////// 递归查找 /// ///static int BinSearchRecursion(int value, int low, int high, int[] array) { if (low>high) return -1; int mid = (low + high) / 2; if (array[mid] == value) { return mid; } else if (array[mid] > value) { return BinSearchRecursion(value, low, mid - 1, array); } else { return BinSearchRecursion(value, mid + 1, high, array); } }
转载地址:http://qdrxo.baihongyu.com/