美文网首页
归并排序

归并排序

作者: X1_blog | 来源:发表于2020-05-07 18:52 被阅读0次
    include "./common.php";
    /*归并排序_递归法*/
    $arr = [14,18,19,37,23,40,29,30,11,7,2,1,8,6,3,5,4] ;
    $sorted_arr = mergeDivide($arr);
    myPrint($sorted_arr);    // 1 2 3 4 5 6 7 8 11 14 18 19 23 29 30 37 40 [Finished in 0.1s]
    
    
    // 拆分
    function mergeDivide($arr){
        $count = count($arr);
        if($count<=1)return $arr;
        $len =  floor($count/2) ;
        $leftArr = array_slice($arr, 0, $len);
        $rightArr = array_slice($arr,$len );
    
        return mergeConquer(mergeDivide($leftArr),mergeDivide($rightArr));
    }
    
    // 合并
    function mergeConquer($leftArr,$rightArr){
        $i=0;$j=0;
        $sorted_arr= [] ;
    
        while ($i<count($leftArr) && $j<count($rightArr)) {
            if($leftArr[$i]<=$rightArr[$j]){
                $sorted_arr[] = $leftArr[$i];
                $i++;
            }
            else{
                $sorted_arr[] = $rightArr[$j];
                $j++;
            }
        }
    
        if($i==count($leftArr)){
            $sorted_arr= array_merge($sorted_arr,array_slice($rightArr,$j));
        }else{
            $sorted_arr= array_merge($sorted_arr,array_slice($leftArr,$i));
        }
    
        return $sorted_arr;
    }
    
    
    

    相关文章

      网友评论

          本文标题:归并排序

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