首页 > 编程 > PHP > 正文

php 算法

2019-11-08 01:02:32
字体:
来源:转载
供稿:网友
冒泡算法的原理:重复走访过要排序的数列,一次比较两个元素,如果顺序错误就交换。
function bubbleSort($numbers) {    $cnt = count($numbers);    for ($i = 0; $i < $cnt; $i++) {        for ($j = 0; $j < $cnt - $i - 1; $j++) {            if ($numbers[$j] > $numbers[$j + 1]) {                $temp = $numbers[$j];                $numbers[$j] = $numbers[$j + 1];                $numbers[$j + 1] = $temp;            }        }    }     return $numbers;} $num = array(20, 40, 60, 80, 30, 70, 90, 10, 50, 0);var_dump(bubbleSort($num));选择算法原理:每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置
function selectionSort($numbers){    $count = count($numbers);    for ($i = 0; $i < $count - 1; $i++) {        $min = $i;        for ($j = $i + 1; $j < $count; $j++) {            if ($numbers[$min] > $numbers[$j]) {                $min = $j;            }        }        if ($min != $i) {            $temp = $numbers[$min];            $numbers[$min] = $numbers[$i];            $numbers[$i] = $temp;        }    }    return $numbers;}//快速排序:通过一趟排序将要排序的数据分割成独立的两部分,//其中一部分的所有数据都比另外一部分的所有数据都要小,//然后再按此方法对这两部分数据分别进行快速排序,//整个排序过程可以递归进行,以此达到整个数据变成有序序列。
function quickSort($numbers) {    static $test = 0;    if (count($numbers) > 1) {        $k = $numbers[0];        $x = [];        $y = [];        $count = count($numbers);        for ($i = 1; $i < $count; $i++) {            if ($numbers[$i] <= $k) {                $x[] = $numbers[$i] ;            } elseif ($numbers[$i] > $k) {                $y[] = $numbers[$i] ;            }        }        $x = quickSort($x);        $y = quickSort($y);        $test++;        var_dump(array_merge($x, array($k), $y));var_dump('测试次数'.$test);        return array_merge($x, array($k), $y);    } else {        return $numbers;    }}$numbers = [20,40,60,80,30,70,90,10,50,0];//var_dump(bubbleSort($numbers));//var_dump(selectionSort($numbers));var_dump(quickSort($numbers));
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表