二分查找是在已排序好的数组中查找数组中指定元素的一种算法,具有查找效率较高的特点,时间复杂度为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); }