欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP实现数组排序的方法:快速排序,插入排序,归并排序算法

程序员文章站 2022-04-03 18:55:16
...

php中对于数组的排序方法是有很多种的,每种数组排序也都有各自不同的原理,下面就来具体看一下关于快速排序算法,归并排序算法以及插入排序算法的示例。

异形数组的遍历

求如下数组中数字的平均值:

$arr1 = array(
1, 2, array(31, 32, 33), 4,
array(51, 52, 53, array(541, 542, 543, 544) ),
6, array(71, 72, 73),
);
$count = 0; //计数
$sum = GetArraySum($arr1);
echo “\

快速排序算法

原理描述:

对于这样一个数组:[5, 1,2, 6,7];

取出第一项(并作为中间数组),并将其余项与其对比后,分为两个数组:

左边数组项比中间项小,右边数组不比中间项小。

如果左边数组和右边数组已经是排好序的数组,则将这3者合并起来,就是最终结果。

如果左边数组和右边数组还不是排好序的数组,则继续递归使用本函数获取有序数组。

原理图:

PHP实现数组排序的方法:快速排序,插入排序,归并排序算法

原理性数据:

$arr1 = [5, 2, 1, 6,7]; //有力说明原理的数据1

小的:[2, 1], 大的:[6, 7], 中间的: [5]

将三者合并: [1, 2, 5, 6, 7];

$arr1 = [2, 1]; //有力说明原理的数据2

中间:[2], 左边:[1] , []

具体案例:

$arr1 = [5, 2, 4, 6, 1, 3];
$arr1 = [5, 2, 4, 6, 1, 3];
//$arr1 = [5, 3, 2, 8, 7];
echo “\

插入排序算法

原理描述:

对于这样一个数组:[2, 3, 4, 1];

要将某个数n插入到一个已经排好序的数组中,

只要将n跟这个数组的项从后往前一个一个对比,只要发现某项比n大,

就将该项后移一位,然后继续往前取出并对比,比n大就往后移动一位,以此类推。

最后没有比n大的时候,就把n放入到刚才往后移动时空出来的那个位置上。

对于一个数组,第1项就可以当做一个“已经排好序”的数组,

则第2项就可以遵照上述原理来进行“插入排序”,于是前两个就可以排好,

并成为了具有两个元素的“排好序的数组”。后续以此类推。

原理图:

PHP实现数组排序的方法:快速排序,插入排序,归并排序算法

原理数据:

$arr1 = [2, 3, 4, 1]; //有力说明原理的数据1

$arr1 = [2, 3, 1]; //有力说明原理的数据2

$arr1 = [2, 1]; //有力说明原理的数据3

$arr1 = [1, 2]; //有力说明原理的数据3

具体案例:

$arr1 = [5, 2, 4, 6, 1, 3];
$arr1 = [2, 3, 4, 1];
$arr1 = [2, 4, 5, 6, 1, 3];
echo “\

归并排序算法

原理描述:

对于这样的一个数组: $arr1 = [1, 3, 5, 2, 4, 6];将其一分为二:$a = [1, 3, 5],
$b = [2, 4, 6];

如果有两个各自已经排好序的数组,则对这两个数组进行如下操作后,就可以获得一个排好序的这两个数组的“溶合数组”:

取出数组a的第一项a1,再取出数组b的第一项b1,比较a1和b1的大小,

并将小的(假设为a1)放入一个新数组,并去删除对应数组a的第一项,

而后再取出对应数组的第一项(不是刚才的那个数据了),而后继续将两者对比大小

每次都放入小的到新数组中,并继续下一次的“删除,取数,对比”。。。。

这样之后最终的结果是,新的数组中就可以得到一个新的排好序的数组。

对于尚未排好序的数组,只要对其以递归方式继续“一分为二”地分割,最终会得到最短数组——只有一个或0个单元,这种数组自然是排好序的了。

原理图:

PHP实现数组排序的方法:快速排序,插入排序,归并排序算法

原理数据:

$arr1 = [1, 3, 5, 4, 6, 7, 8 ]; //有力说明原理的数据1

从中间一份为2: [ ]; [ 6, 7, 8]

[ 1, 3, 4, 5, ]

$arr1 = [1, 3, 2, 4]; //有力说明原理的数据2

演示案例:


$arr1 = [5, 2, 4, 6, 1, 3];
echo “\

相关推荐:

php 冒泡排序 快速排序,php冒泡排序

php 数组排序方法分享(冒泡排序、选择排序)

以上就是PHP实现数组排序的方法:快速排序,插入排序,归并排序算法的详细内容,更多请关注其它相关文章!

相关标签: 数组排序