Write a programm for binary search
class BinarySearch
{
function doBinarySearch($arr,$searchVal,$startIndex = 0,$endIndex = '') {
if(count($arr) > 0 ) { // check if array has some element or not
sort($arr);
if($endIndex == '') {
$endIndex = (int) (count($arr)-1);
}
if($endIndex != 1) {
$mid = (int) (($endIndex + $startIndex)/2);
}
else {
$mid = $endIndex;
}
if($arr[$mid] == $searchVal) {
return $mid;
}
else if($arr[$mid] < $searchVal) {
$startIndex = $mid+1;
//start index is greater than end index means there is no value to search
if($startIndex>$endIndex) {
return false;
}
}
else if($arr[$mid] > $searchVal) {
$endIndex = $mid-1;
if($startIndex>=$endIndex) {
return false;
}
}
else
return false;
return $this->doBinarySearch($arr,$searchVal,$startIndex,$endIndex); // recursive call
}
else {
return false;
}
}
}
$searchObj = new BinarySearch();
$res = $searchObj->doBinarySearch(array(1,13,14,3,9,5,10,7),13);
var_dump($res);
Post a Comment