• PHP 快速排序 与二维数组排序


    1、快速排序

    function quick_sort($arr)
    {
        //判断参数是否是一个数组
        if(!is_array($arr)) return false;
        //递归出口:数组长度为1,直接返回数组
        $length = count($arr);
        if($length<=1) return $arr;
        //数组元素有多个,则定义两个空数组
        $left = $right = array();
        //使用for循环进行遍历,把第一个元素当做比较的对象
        for($i=1; $i<$length; $i++)
        {
          //判断当前元素的大小
            if($arr[$i]>$arr[0]){
                $left[]=$arr[$i];
            }else{
                $right[]=$arr[$i];
            }
        }
        //递归调用
        $left=quick_sort($left);
        $right=quick_sort($right);
        //将所有的结果合并
        return array_merge($left,array($arr[0]),$right);
    }

     2、二维数据排序

    function dump($var, $exit = true) {
        echo '<pre>';
        print_r ( $var );
        echo '</pre>';
        if ($exit) {
            die ();
        }
    }
    /**
     * 多维数组排序,第一个参数需要排序的数组,第二个参数需要排序的字段,第三个参数是排序方式
     * 例1: array_orderby($list, 'age', SORT_DESC);
     * 例2:$list = array_orderby($list, 'age', SORT_ASC(4), 'name', SORT_DESC(3));
     * @return mixed
     */
    function array_orderby()
    {
        $args = func_get_args();
        $data = array_shift($args);
        foreach ($args as $n => $field) {
            if (is_string($field)) {
                $tmp = array();
                foreach ($data as $key => $row)
                    $tmp[$key] = $row[$field];
                $args[$n] = $tmp;
            }
        }
        $args[] = &$data;
        call_user_func_array('array_multisort', $args);
        return array_pop($args);
    }

     

    //array_orderby用法
    $list = [
        [
            'name' => 'abc',
            'age'  => 19,
        ],
        [
            'name' => 'ddd',
            'age'  => 13,
        ],
        [
            'name' => 'bb',
            'age'  => 29,
        ],
        [
            'name' => 'cc',
            'age'  => 21,
        ],
        [
            'name' => 'dc',
            'age'  => 21,
        ],
    ];
    $list = array_orderby($list, 'age', SORT_ASC, 'name', SORT_DESC);
    dump($list);

     http://www.sgfoot.com/view/161

     

  • 相关阅读:
    寒武纪思元290芯片和MLU290-M5卡
    NUMA Domian和NUMA Distance
    Understanding Habana Labs's GPU
    AMD Instinct MI100-首个FP64性能超10TFLOPS的计算卡
    编程小记
    Redis二进制安全
    Redis布隆过滤器与布谷鸟过滤器
    缓存与缓存一致性协议
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/weihua2018/p/9401077.html
Copyright © 2020-2023  润新知