二分查找是在已排序好的数组中查找数组中指定元素的一种算法,具有查找效率较高的特点,时间复杂度为O()=O(logn)。
今天试着实现了二分查找算法:
java例子:
public int binarySearch(int[] ary, int val, int st, int end){
if (ary==null || ary.length==0) {
return -1;
}
int mid = (int)(end+st)/2;
if (ary[mid]>val) {
end = mid-1;
} else if (ary[mid]<val) {
st = mid+1;
} else {
return mid;
}
if (st>end) {
return -1;
}
return binarySearch(ary,val,st,end);
}
php例子:
function binarySearch($array, $val, $st=0, $end=0){
if (!(is_array($array) && count($array)>0)) {
return false;
}
if ($end==0) {
$end = count($array) - 1;
}
$mid = intval(($st+$end)/2);
if ($array[$mid]>$val) {
$end = $mid - 1;
} elseif ($array[$mid]<$val) {
$st = $mid + 1;
} else {
return $mid;
}
if ($st>$end) {
return -1;
}
return binarySearch($array, $val, $st, $end);
}