• php三种排序算法


    1.

    <?php

    /**
    * 快速排序不费空间也节省时间
    */
    $arr=array(5,1,8,2,6,4,9,3,7);
    // $arr=array(1,2,3,4,5,6,7,8,9);
    // $arr=array(9,8,7,6,5,4,3,2,1);
    // $arr=array(1,5,9,7,6,4);
    function fast($arr)
    {
    //统计数组长度
    $length=count($arr);

    //定义两个空数组
    $left=array();
    $right=array();

    //如果数组长度<1,返回数组
    if($length<=1){
    return $arr;
    }
    for($i=1;$i<$length;$i++){
    //找一个数作为比较,为了方便数组中的第一个数
    if($arr[0]>$arr[$i]){
    //小于这个数的放入这个数组,第一次后数组中1243
    $left[]=$arr[$i];
    }else{
    //大于这个数的放入这个数组,第一次后数组中8697
    $right[]=$arr[$i];
    }

    }
    var_dump($left);
    //递归调用实现排序
    $left=fast($left);
    //把第一次比较数放入两个数组中的一个
    $left[]=$arr[0];
    $right=fast($right);
    return array_merge($left,$right);
    }

    var_dump(fast($arr));
    ?>

    2.

    <?php

    /**
    * 冒泡排序费时间
    */
    //随便定义一个数组,即要比较的数
    $arr=array(12,11,63,9,25);
    $arr=array(1,2,3,4,5,6,7,8,9);
    //$arr=array(999,888,777,6,5,4,3,2,1);
    function maopao($arr)
    {
    //统计数组的长度
    $length=count($arr);

    //外层循环就是数组有多少个数我就要把这个数组遍历多少次,每一次里层循环排好序的数组
    for($i=0;$i<$length;$i++)
    {
    //里层循环就是为了进行排序,$l-1是因为冒泡排序法只要比较$l-1次
    for($j=0;$j<$length-1;$j++)
    {
    //如果相邻数不比它后面的数小就不用排序,如果小后面的数会出现在前面的位置
    if($arr[$j]<$arr[$j+1]){
    $t=$arr[$j];
    $arr[$j]=$arr[$j+1];
    $arr[$j+1]=$t;
    }
    }
    }
    return $arr;
    }

    var_dump(maopao($arr));
    ?>

    3.

    <?php
    /**
    * 桶排序费空间
    */


    //定义一个数组,及要排序的数
    $arr=array(3,5,5,2,8);

    function tong($arr)
    {
    //定义一个一维数组,一定要比你所要比较的数大,数组里的数就相当于一个桶,定义在100以内
    $tong=range(0,100);

    //把数组里的数都 初始化为0
    for($i=0;$i<=10;$i++){
    $tong[$i]=0;
    }

    //重新给数组赋值
    foreach($arr as $value){
    //$arr中的数与$a中的索引对应,$arr中有一个$a的索引值就要自增, ++就是自增的意思
    $tong[$value]++;
    }

    for($i=0;$i<=10;$i++){

    //$j=1是因为,$a中索引值>=1的是我们想要输出的
    for($j=1;$j<=$tong[$i];$j++)
    {
    echo $i;
    }
    }

    }

    tong($arr);
    ?>

  • 相关阅读:
    PHP设计模式——观察者模式
    TRIZ系列-创新原理-34-抛弃和再生部件原理
    玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo
    高速排序算法C++实现
    crm操作报价单实体
    CSS3 网格布局(grid-layout)基础知识
    shadowOffset 具体解释
    [软件人生]关于此次抄袭事件的一个对话
    SpringMVC接收复杂集合对象(参数)代码示例
    Spring MVC同时接收一个对象与List集合对象
  • 原文地址:https://www.cnblogs.com/dyj--php/p/7652755.html
Copyright © 2020-2023  润新知