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

原文地址:https://www.cnblogs.com/myIvan/p/10277673.html