PHP冒泡排序

Fly 2023-08-19 19:35:17 560浏览 623字数

<?php

// 冒泡排序

$a = [32,45,56,3,23,54,323];

function maopao($a){

    for($i=0;$i<count($a);$i++){

        for($y=$i+1;$y<count($a);$y++){

            if($a[$i] > $a[$y]){

                $tmp = $a[$i];

                $a[$i] = $a[$y];

                $a[$y] = $tmp;

            }

        }

    }

    return $a;

}

echo "<pre>";

var_dump(maopao($a));

// 递归 - 冒泡排序

// 思路 - 拿出第一个数跟其他数比较,大于小于次数分两边,自己在中间

// (1) 递归就是在过程或函数里调用自身。 ...

// (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 ...

// (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。 ...

// (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。 ...

$arr2 = $a;

function oo2($arr2){

    $num = count($arr2);

    if($num <= 1){return $arr2;}  //递归出口

    $one = $arr2[0];

    $arr_left = array();

    $arr_right = array();

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

        if($one > $arr2[$i]){

            $arr_right[] = $arr2[$i];

        }else{

            $arr_left[] = $arr2[$i];

        }

    }

    return array_merge(oo2($arr_right),array($one),oo2($arr_left));

}

print_r(oo2($arr2));




结果


Array
(
    [0] => 3
    [1] => 23
    [2] => 32
    [3] => 45
    [4] => 54
    [5] => 56
    [6] => 323
)
Array
(
    [0] => 3
    [1] => 23
    [2] => 32
    [3] => 45
    [4] => 54
    [5] => 56
    [6] => 323
)



最后修改:2023-08-21 18:00:17

非特殊说明,本博所有文章均为博主原创。