​PHP中怎么使用归并排序

本篇文章给大家分享的是有关PHP中怎么使用归并排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

我们提供的服务有:成都网站设计、做网站、微信公众号开发、网站优化、网站认证、武清ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的武清网站制作公司

归并排序:

归并排序(ERGE-SOQfT)是建立在归并操作,上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成-一个有序表,称为二路归并。我们以代码为例:

结果如下:

​PHP中怎么使用归并排序

归并排序的算法是:

1)将数组拆分成两个数组。 。

2)重复步骤1将数组拆分成最小单元。。

3)申请空间, 使其大小为两个已经排序序列之和,该空间用来存放合并后的序列。

4)设定两个指针, 最初位置分别为两个已经排序序列的起始位置。。

5)比较两个指针所指向的元素, 选择相对小的元素放入到合并空间,并移动指针到下一位置。

6)重复步骤3直到某-指针超出序列尾。。

7)将另-序列剩下的所有元素直接复制到合并序列尾。

代码如下:

$arr = array(4,7,2,1,5,9,3);
//归并排序函数
function merge_sort($arr){
//递归出口
$len = count($arr);
if($len <= 1) return $arr;
//拆分.
$middle = floor($len / 2);
$left = array_slice($arr,0, $middle);
$right = array_slice($arr, $midd1e);
//假设左边和右边都已经排好序:二路归并
$m = array();
while(count($left) && count($right)){
//只要$arr1和$arr2里面还有元素,就进行循环
//取出每个数组的第一个元素: 进行比较
$arr3[] = $left[0] < $right[0] ? array_shift($left) : array_shift($right);
}
//返回结果
return array_merge($m, $left ,$right);
}
print_r(merge_sort($arr));

​PHP中怎么使用归并排序

以上就是PHP中怎么使用归并排序,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


文章名称:​PHP中怎么使用归并排序
标题路径:http://azwzsj.com/article/isheep.html