用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),原文:https://www.zkii.net/tech/php/2604.html