冒泡排序与快速排序

716次阅读
没有评论

共计 924 个字符,预计需要花费 3 分钟才能阅读完成。

<?php
namespace Index;

require './DumpTrait.php';
class Sort
{
    use DumpTrait;

    function test()
    {
        $this->dump([1,2,3,4]);
    }
    /**
     * 冒泡排序 从小到大排序
     * [4,1,5,12,44,23]
     */
    public function bubbleSort($sortArry)
    {
        $n = count($sortArry);
        for ($i = 0; $i < $n; $i++) {
            for ($x = $n-1; $x > $i; $x--) {
                // 下面的判断中:
                // 小于号 < 为正序排列
                // 大于号 > 为倒序排列
                if ($sortArry[$x] < $sortArry[$x-1]) { // 正序
                //if ($sortArry[$x] < $sortArry[$x-1]) { // 倒序
                    // 小的放在前去,大的在后面
                    $tmp = $sortArry[$x-1];
                    $sortArry[$x-1] = $sortArry[$x];
                    $sortArry[$x] = $tmp;
                }
            }
        }
        //dump($sortArry);
        return $sortArry;
    }

    //快速排序(数组排序)
    public function quickSort($array) {
        if (count($array) <= 1) return $array;
        $key = $array[0]; //
        $left_arr = array();
        $right_arr = array();
        // 比$key小的放左边,比$key大的放右边,递归执行该规则
        for ($i=1; $i<count($array); $i++){
            if ($array[$i] <= $key)
                $left_arr[] = $array[$i];
            else
                $right_arr[] = $array[$i];
            }
            $left_arr = $this->quicksort($left_arr);
            $right_arr = $this->quicksort($right_arr);
        return array_merge($left_arr, array($key), $right_arr);
    }


}

引用的trait类可忽视。

转载自https://zhuanlan.zhihu.com/p/625479327

正文完
 
BlackBeans
版权声明:本站原创文章,由 BlackBeans 2023-09-17发表,共计924字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)