AI智能
改变未来

用PHP实现一些常见的排序算法

1、冒泡排序:

两两相比,每循环一轮就不用再比较最后一个元素了,因为最后一个元素已经是最大或者最小。

function maopaoSort ($list){$len = count($list);for ($i = 0; $i < $len - 1; $i++) {for ($j = 0; $j < $len - $i - 1; $j++) {if ($list[$j] > $list[$j + 1]) {$tmp = $list[$j];$list[$j] = $list[$j + 1];$list[$j + 1] = $tmp;}}}return $list;}

2、选择排序:

选定一个作为基本值,剩下的和这个比较,然后调换位置。

function xuanzeSort ($list){$len = count($list);for ($i = 0; $i < $len - 1; $i++) {$pos = $i;for ($j = $i + 1; $j < $len; $j++) {if ($list[$pos] > $list[$j]) {$pos = $j;}}if ($pos != $i) {$tmp = $list[$pos];$list[$pos] = $list[$i];$list[$i] = $tmp;}}return $list;}

3、快速排序:

原理就是拿出一个标尺值,然后分为左右两个数组,分别对比

function kuaisuSort ($list){$len = count($list);if ($len <= 1) {//递归出口return $list;}$base = $list[0];//选择一个比较值$leftList = $rightList = [];for ($i = 1; $i < $len; $i++) {if ($base > $list[$i]) {$leftList[] = $list[$i];} else {$rightList[] = $list[$i];}}//递归分别再处理左右两边的数组$leftList = kuaisuSort($leftList);$rightList = kuaisuSort($rightList);return array_merge($leftList, [$base], $rightList);}

4、插入排序:

假设前面的数都是排好顺序的,要把第n个数插入到有序里

function charuSort ($list){$len = count($list);for ($i = 1; $i < $len; $i++) {$tmp = $list[$i];//获取对比元素for ($j = $i - 1; $j > 0; $j--) {if ($list[$j] > $tmp) {$list[$j + 1] = $list[$j];$list[$j] = $tmp;} else {break;}}}return $list;}

以上内容希望帮助到大家, 很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家 ,需要戳这里 PHP进阶架构师>>>实战视频、大厂面试文档免费获取

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 用PHP实现一些常见的排序算法