php常用排序算法有哪几种?这八种排序算法你知多少
发布时间:2022-04-07 16:10:38 所属栏目:语言 来源:互联网
导读:学习PHP过程中,对于一些基本的排序算法大家还是需要掌握的,算法作为程序的核心,其好坏会影响到程序的质量,因此这篇文章就给大家介绍一些PHP常用排序算法的方法,文本还有PHP的实现代码,供大家参考,下面我们就来一起看看。 1 快速排序 快速排序是由东尼
学习PHP过程中,对于一些基本的排序算法大家还是需要掌握的,算法作为程序的核心,其好坏会影响到程序的质量,因此这篇文章就给大家介绍一些PHP常用排序算法的方法,文本还有PHP的实现代码,供大家参考,下面我们就来一起看看。 1 快速排序 快速排序是由东尼・霍尔发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。 事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环可以在大部分的架构上,很有效率地被实现出来。 快速排序采用分治法实现排序,具体步骤:从数列中挑出一个数作为基准元素。通常选择第一个或最后一个元素。扫描数列,以基准元素为比较对象,把数列分成两个区。规则是:小的移动到基准元素前面,大的移到后面,相等的前后都可以。分区完成之后,基准元素就处于数列的中间位置。然后再用同样的方法,递归地排序划分的两部分。 递归的结束条件是数列的大小是0或1,也就是永远都已经被排序好了。 PHP代码实现: function quickSort($arr) { $len = count($arr); // 先设定结束条件,判断是否需要继续进行 if($len <= 1) { return $arr; } // 选择第一个元素作为基准元素 $pivot = $arr[0]; // 初始化左数组 $left = $right = array(); // 初始化大于基准元素的右数组 $right = array(); // 遍历除基准元素外的所有元素,按照大小关系放入左右数组内 for ($i = 1; $i < $len ; $i++) { if ($arr[$i] < $pivot) { $left[] = $arr[$i]; } else { $right[] = $arr[$i]; } } while ($arr[$rightIndex] > $pivot) { $rightIndex--; } if ($leftIndex <= $rightIndex) { list($arr[$leftIndex], $arr[$rightIndex]) = [$arr[$rightIndex], $arr[$leftIndex]]; (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |