Powered by Blogger.

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);

No comments