您的位置 首页 php

「排序算法」用PHP实现的排序算法汇总,值得收藏

我们在网上经常可以看到 C语言 、JAVA语言实现的各类排序算法,但是很少见有人分享用PHP实现的排序算法。究其原因在于一方面PHP属于 解释型语言 ,另一方面PHP已经为我们写好了相关排序算法,无需程序员再手动去写。毕竟我们自己实现的算法不管是从 时间复杂度 还是空间复杂度都未必有原生的算法优秀。

用PHP实现的排序算法汇总

总而言之用PHP来实现计算机的排序算法,在旁人来看是一个很蠢的事情。这篇笔记主要是帮助PHP程序员入门和理解计算机算法实现原理,喜欢研究算法的朋友们欢迎收藏。

一、 冒泡排序 算法:

冒泡排序简单的理解就是一组数据,两个两个进行比较,把最小的气泡升到最前面,把最大的气泡沉到底。最终实现对数据的排序。

PHP源码:

function BubbleSort(array $container)
{
 $count = count($container);
 for ($j = 1; $j < $count; $j++) {
 for ($i = 0; $i < $count - $j; $i++) {
 if ($container[$i] > $container[$i + 1]) {
 $temp = $container[$i];
 $container[$i] = $container[$i + 1];
 $container[$i + 1] = $temp;
 }
 }
 }
 return $container;
} 

二、 快速排序算法

从数列中挑出一个元素,称为 “基准”(pivot)。所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。C 语言中的 qsort就是快速排序。

PHP源码:

function QuickSort(array $container)
{
 $count = count($container);
 if ($count <= 1) { 
 return $container;
 }
 $pivot = $container[0]; 
 $left = $ right  = [];
 for ($i = 1; $i < $count; $i++) {
 if ($container[$i] < $pivot) {
 $left[] = $container[$i];
 } else {
 $right[] = $container[$i];
 }
 }
 $left = QuickSort($left);
 $right = QuickSort($right);
 return array_merge($left, [$container[0]], $right);
} 

三、插入排序算法:

算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

PHP源码:

function InsertSort(array $container)
{
 $count = count($container);
 for ($i = 1; $i < $count; $i++){
 $temp = $container[$i];
 $j = $i - 1;
 // Init
 while($j >= 0 && $container[$j] > $temp){
 $container[$j+1] = $container[$j];
 $j--;
 }
 if($i != $j+1)
 $container[$j+1] = $temp;
 }
 return $container;
} 

四、选择排序算法:

它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

PHP源码:

function SelectSort(array $container)
{
 $count = count($container);
 for ($i = 0; $i < $count; $i++){
 $k = $i;
 for ($j = $i + 1; $j < $count; $j++){
 if($container[$j] < $container[$k]){
 $k = $j;
 }
 }
 if($k != $i){
 $temp = $container[$i];
 $container[$i] = $container[$k];
 $container[$k] = $temp;
 }
 }
 return $container;
} 

由于篇幅有限,在头条中暂时分享4种PHP实现的算法。更多排序方法如大根堆排序、飞梭排序、 希尔排序 归并排序 等,欢迎点击下面链接进行阅读。

相关源码和详细解释均已发布在“菠菜园”中,大家也可以百度搜索“菠菜园”查看更多编程知识哦~

本文转自菠菜园(www.zkii.net),原文:

文章来源:智云一二三科技

文章标题:「排序算法」用PHP实现的排序算法汇总,值得收藏

文章地址:https://www.zhihuclub.com/150248.shtml

关于作者: 智云科技

热门文章

网站地图