美文网首页
php版本排序算法

php版本排序算法

作者: 小哥哥吖Q | 来源:发表于2020-06-10 16:22 被阅读0次

    1. 冒泡排序法 

     *     思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。 

     *     比如:2,4,1    // 第一次 冒出的泡是4 

     *                2,1,4   // 第二次 冒出的泡是 2 

     *                1,2,4   // 最后就变成这样 

    $arr=array(1,43,54,62,21,66,32,78,36,76,39); 

    function getpao($arr)

      $len=count($arr);

      //设置一个空数组 用来接收冒出来的泡

      //该层循环控制 需要冒泡的轮数

      for($i=1;$i<$len;$i++)

      { //该层循环用来控制每轮 冒出一个数 需要比较的次数

        for($k=0;$k<$len-$i;$k++)

        {

           if($arr[$k]>$arr[$k+1])

            {

                $tmp=$arr[$k+1];

                $arr[$k+1]=$arr[$k];

                $arr[$k]=$tmp;

            }

        }

      }

      return $arr;

    }

    快速排序 

    原理 1 2 3 4 5

    //第一次过程

    [1,2],[3],[4,5] 

    function quick_sort($arr) {

        //先判断是否需要继续进行

        $length = count($arr);

        if($length <= 1) {

            return $arr;

        }

        //如果没有返回,说明数组内的元素个数 多余1个,需要排序

        //选择一个标尺

        //选择第一个元素

        $base_num = $arr[0];

        //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内

        //初始化两个数组

        $left_array = array();//小于标尺的

        $right_array = array();//大于标尺的

        for($i=1; $i<$length; $i++) {

            if($base_num > $arr[$i]) {

                //放入左边数组

                $left_array[] = $arr[$i];

            } else {

                //放入右边

                $right_array[] = $arr[$i];

            }

        }

        //再分别对 左边 和 右边的数组进行相同的排序处理方式

        //递归调用这个函数,并记录结果

        $left_array = quick_sort($left_array);

        $right_array = quick_sort($right_array);

        //合并左边 标尺 右边

        return array_merge($left_array, array($base_num), $right_array);

    }

    相关文章

      网友评论

          本文标题:php版本排序算法

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