美文网首页PHP
PHP二分查找和快速排序

PHP二分查找和快速排序

作者: Mr_dreamer | 来源:发表于2018-01-11 11:27 被阅读8次

二分查找

function bin_search ($arr, $num)
    {   

        if (!in_array($num, $arr)) {
            return 'error num input';
        }

        $len = count($arr);
        $start = 0;
        $end = $len-1;


        while ($start <= $end) {

            $mid = ceil( ($end+$start)/2 );

            /*if ($arr[$start] === $num) {
                return $start;
            }

            if ($arr[$end] === $num) {
                return $end;
            }*/

            if ($arr[$mid] < $num) {
                $start = $mid + 1;
            }elseif ($arr[$mid] > $num) {
                $end = $mid - 1;
            }else {
                return $mid;
            }   
        }
        return 'false';
    }

$arr = [1,2,3,4,5,6];
//set_time_limit(2); //自己玩的时候加上这个预防死循环
echo bin_search($arr, 1);

由于二分查找需要的是有序数组,所以顺便贴一个 快速排序法
快速排序

function quick_sort ($array) {
        
        if(!isset($array[1])) {
          return $array;
        }

        $mid = $array[0]; 
        $leftArray = array(); 
        $rightArray = array();

        foreach($array as $v)
        {
            if($v > $mid)
                $rightArray[] = $v;  
            if($v < $mid)
                $leftArray[] = $v;   
        }

        $leftArray = quick_sort($leftArray); 
        $leftArray[] = $mid;        

        $rightArray = quick_sort($rightArray);  
        return array_merge($leftArray, $rightArray);  
        
}

$arr2 = [2,0,54,2342,56,22,5];
var_dump(quick_sort($arr2));

相关文章

网友评论

    本文标题:PHP二分查找和快速排序

    本文链接:https://www.haomeiwen.com/subject/ijyznxtx.html