• php 中的查找算法 和 排序方法(多字段排序)


    一、查找算法

    1、顺序查找(一个一个查,效率低,不用多说)

    2、二分查找

    /*
    php  二分查找
    在$a数组里查找$x的位置
    $a必须是一个以升序排序后的数组
    */
    function binsearch($find,$arr){
        $count = count($arr);
        $start = 0;
        $end = $count-1;
        while($start<=$end){
            $middle = intval(($start+$end)/2);
            if($arr[$middle]>$find){
                $end = $middle-1;
            }elseif($arr[$middle]<$find){
                $start = $middle+1;
            }else{
                return $middle;
            }
        }
        return -1;
    }

    二、排序算法

    1、冒泡排序

    冒泡排序  
    第一次排出最大的数,第二次排出第二大的,
    $arr=[5,3,5,7,1,9];
    function bubblesearch($arr){
        $len = count($arr);
        for($i=1;$i<$len;$i++){
            for($j=0;$j<len-$i;$j++){
                if($arr[$j+1]<$arr[j]){
                    $temp         = $arr[$j+1];
                    $arr[j+1]     = $arr[j];
                    $arr[j]     = $temp;
                }
            }
        }
    }

    2、自带的排序函数

    sort() 函数用于对数组单元从低到高进行排序。
    
    rsort() 函数用于对数组单元从高到低进行排序。
    
    asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
    
    arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
    
    ksort() 函数用于对数组单元按照键名从低到高进行排序。
    
    krsort() 函数用于对数组单元按照键名从高到低进行排序
    
    usort(array,function($a,$b){
        if($a>$b){
            return 1;
        }else{
            return -1;
        }
    })
    array_multisort() 这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列

    3、array_multisort() 实际用法,实现多维数据按照多个字段排序

    例子:按照年龄从大到小的顺序排列,如果年龄相同就按照名字的顺序排序

    $array[] = array("age"=>20,"name"=>"li");
    $array[] = array("age"=>21,"name"=>"ai");
    $array[] = array("age"=>20,"name"=>"ci");
    $array[] = array("age"=>22,"name"=>"di");
     
    foreach ($array as $key=>$value){
     $age[$key] = $value['age'];
     $name[$key] = $value['name'];
    }
     
    array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$array);
    print_r($array);

    本文参考:https://www.cnblogs.com/88phper/p/7825453.html

  • 相关阅读:
    Android 内存泄漏原因
    Android Selector和Shape的用法
    Android 中的Activity、Window、View之间的关系
    Android Application 详细介绍
    深入理解Android异步消息处理机制
    利用图像识别技术解决非原生控件的定位问题
    一招让 IOS 自动化化快的飞起
    IOS 模拟器多开集成测试和那些坑
    利用UiWatchers 监听解决安卓自动化各种自动化各种非期待弹窗,弹层,升级,广告,对话框,来电等问题
    uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码
  • 原文地址:https://www.cnblogs.com/myIvan/p/10277673.html
Copyright © 2020-2023  润新知