前言:
现在我们对“sortphp排序”大体比较讲究,你们都想要学习一些“sortphp排序”的相关文章。那么小编在网络上汇集了一些有关“sortphp排序””的相关知识,希望朋友们能喜欢,咱们快快来了解一下吧!我们在网上经常可以看到C语言、JAVA语言实现的各类排序算法,但是很少见有人分享用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实现的算法。更多排序方法如大根堆排序、飞梭排序、希尔排序、归并排序等,欢迎点击下面链接进行阅读。
相关源码和详细解释均已发布在“菠菜园”中,大家也可以百度搜索“菠菜园”查看更多编程知识哦~
本文转自菠菜园(),原文: