美文网首页
PHP数组示例算法

PHP数组示例算法

作者: xuweiqiang | 来源:发表于2019-08-11 12:19 被阅读0次

    1、冒泡排序

    function bubble_sort($arr) {
        $n=count($arr);
        for($i=0;$i<$n-1;$i++){
            for($j=$i+1;$j<$n;$j++) {
                if($arr[$j]<$arr[$i]) {
                    $temp=$arr[$i];
                    $arr[$i]=$arr[$j];
                    $arr[$j]=$temp;
                }
            }
        }
        return $arr;
    }
    

    2、归并排序

    function Merge(&$arr, $left, $mid, $right) {
        $i = $left;
        $j = $mid + 1;
        $k = 0;
        $temp = array();
        while ($i <= $mid && $j <= $right) {
            if ($arr[$i] <= $arr[$j]){
                $temp[$k++] = $arr[$i++];
            }else{
                $temp[$k++] = $arr[$j++];
            }
        }
        while ($i <= $mid){
            $temp[$k++] = $arr[$i++];
        }
        while ($j <= $right){
            $temp[$k++] = $arr[$j++];
        }
        for ($i = $left, $j = 0; $i <= $right; $i++, $j++){
            $arr[$i] = $temp[$j];
        }
    }
    

    3、二分查找-递归

    function bin_search($arr,$low,$high,$value) {
        if($low>$high){
            return false;
        }else{
            $mid=floor(($low+$high)/2);
            if($value==$arr[$mid]){
                return $mid;
            }elseif($value<$arr[$mid]){
                return bin_search($arr,$low,$mid-1,$value);
            }else{
                return bin_search($arr,$mid+1,$high,$value);
            }
        }
    }
    

    4、二分查找-非递归

    function bin_search($arr,$low,$high,$value) {
        while($low <= $high) {
            $mid = floor(($low+$high)/2);
            if($value == $arr[$mid]){
                return $mid;
            }elseif($value < $arr[$mid]){
                $high = $mid-1;
            }else{
                $low = $mid+1;
            }
        }
        return false;
    }
    

    5、快速排序

    function quick_sort($arr) {
        $n=count($arr);
        if($n <= 1){
            return $arr;
        }
        $key = $arr[0];
        $left_arr = array();
        $right_arr = array();
        for($i= 1;$i<$n;$i++) {
            if($arr[$i] <= $key){
                $left_arr[] = $arr[$i];
            }else{
                $right_arr[] = $arr[$i];
            }
        }
        $left_arr = quick_sort($left_arr);
        $right_arr = quick_sort($right_arr);
        return array_merge($left_arr,array($key),$right_arr);
    }
    

    6、选择排序

    function select_sort($arr) {
        $n = count($arr);
        for($i = 0;$i < $n;$i++) {
            $k = $i;
            for($j = $i+1;$j < $n;$j++) {
                if($arr[$j] < $arr[$k]){
                    $k = $j;
                }
            }
            if($k != $i) {
                $temp = $arr[$i];
                $arr[$i] = $arr[$k];
                $arr[$k] = $temp;
            }
        }
        return $arr;
    }
    

    7、插入排序

    function insertSort($arr) {
        $n=count($arr);
        for($i=1;$i<$n;$i++) {
            $tmp=$arr[$i];
            $j=$i-1;
            while($arr[$j]>$tmp) {
                $arr[$j+1]=$arr[$j];
                $arr[$j]=$tmp;
                $j--;
                if($j<0){
                    break;
                }
            }
        }
        return $arr;
    }
    

    相关文章

      网友评论

          本文标题:PHP数组示例算法

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