二分搜索及其扩展
<div id="cnblogs_post_body">二分搜索折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
时间复杂度:二分搜索每次把搜索区域减少一半,很明显时间复杂度为O(logN)。
空间复杂度:O(1),虽以递归形式定义,但是尾递归,可改写为循环。
二分搜索的基本实现
二分查找法在算法家族大类中属于&ldquo;分治法&rdquo;,分治法基本都可以用递归来实现的,二分查找法的递归实现如下:
<div class="cnblogs_code">int binary_search(int array[], int low, int high, int target){ if (low > high) return -1; int mid = (low + high)/2; if (array> target) return binary_search(array, low, mid -1, target); if (array< target) return binary_search(array, mid+1, high, target); return mid;}
页:
[1]