当前位置: 首页 / 代码分享 / 正文

php常见的数组从小到大排序算法和函数

发布时间:2020-09-13 00:08:52 作者:小超越君


作为phper,一般接触算法的编程不多。

但基本的排序算法还是应该掌握。

毕竟算法作为程序的核心,算法的好坏决定了程序的质量。

1、冒泡排序

原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。
第一次排出最大的数,第二次排出第二大的,

1
2
3
4
5
6
7
8
9
10
11
12
13
$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() 函数用于对数组单元按照键名从高到低进行排序

1
2
3
4
5
6
7
8
usort(array,function($a,$b){
    if($a>$b){
        return 1;
    }else{
        return -1;
    }
})
array_multisort() 这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列

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

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

1
2
3
4
5
6
7
8
9
10
11
12
$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);

扩展学习

二分查找算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
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;
}

转载请保留本文链接:https://www.zhe94.com/776.html

小超越
热爱折腾,曾想着改变世界,如今只能向生活低头,寻找可口的牛奶和面包
添加站长微信作者头像
专注高品质湛江网站建设及湛江SEO优化服务 立即咨询