Sort

作者: 瞬铭 | 来源:发表于2019-02-25 21:55 被阅读0次

    Sort

    quickSort

    参考:https://blog.csdn.net/adusts/article/details/80882649

    class Solution {
    
        function quickSort(&$arrInput, $l, $r) {
            $i   = $l;
            $j   = $r;
            $tmp = $arrInput[$l];
            if($l > $r){
                return;
            }
            while ($i < $j) {
    
                while ($i < $j && $arrInput[$j] >= $tmp) {
                    $j--;
                }
    
                while ($i < $j && $arrInput[$i] <= $tmp) {
                    $i++;
                }
    
                if ($i < $j) {
                    $tt = $arrInput[$i];
    
                    $arrInput[$i] = $arrInput[$j];
                    $arrInput[$j] = $tt;
                }
            }
            $arrInput[$l] = $arrInput[$i];
            $arrInput[$i] = $tmp;
            $this->quickSort($arrInput, $l, $i - 1);
            $this->quickSort($arrInput, $i + 1, $r);
        }
    
      //这个方法相当有意思,简单明了
      function quickSort2($arr){
    
            // 获取数组长度
            $length = count($arr);
    
            // 判断长度是否需要继续二分比较
            if($length <= 1){
                return $arr;
            }
    
            // 定义基准元素
            $base = $arr[0];
    
            // 定义两个空数组,用于存放和基准元素的比较后的结果
            $left = [];
            $right = [];
    
            // 遍历数组
            for ($i=1; $i < $length; $i++) {
    
                // 和基准元素作比较
                if ($arr[$i] > $base) {
                    $right[] = $arr[$i];
                }else {
                    $left[] = $arr[$i];
                }
    
            }
    
            // 然后递归分别处理left和right
            $left = $this->quickSort2($left);
            $right = $this->quickSort2($right);
    
            // 合并
            return array_merge($left,[$base],$right);
    
        }
    }
    

    BubbleSort

        function bubbleSort(&$arr){
            for($i = 0;$i<count($arr);$i++){
                for($j = $i;$j<count($arr);$j++){
                    if($arr[$i] < $arr[$j]){
                        $tt = $arr[$i];
                        $arr[$i] = $arr[$j];
                        $arr[$j] = $tt;
                    }
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:Sort

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