PHP实现归并排序算法(代码实例)
Posted php中文网最新课程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP实现归并排序算法(代码实例)相关的知识,希望对你有一定的参考价值。
源 / php中文网 源 / www.php.cn
归并排序(也可以称之为合并排序)是一种基于O (n log n)比较的排序算法。大多数实现都会产生一个稳定的排序,这意味着实现在排序后的输出中保留相等元素的输入顺序。
(查看原文请点击本文末尾左下角:阅读原文)
下面我们给大家介绍如何用PHP实现归并排序算法。
PHP代码示例如下:
<?php
function
merge_sort(
$my_array
){
if
(
count
(
$my_array
) == 1 )
return
$my_array
;
$mid
=
count
(
$my_array
) / 2;
$left
=
array_slice
(
$my_array
, 0,
$mid
);
$right
=
array_slice
(
$my_array
,
$mid
);
$left
= merge_sort(
$left
);
$right
= merge_sort(
$right
);
return
merge(
$left
,
$right
);
}
function
merge(
$left
,
$right
){
$res
=
array
();
while
(
count
(
$left
) > 0 &&
count
(
$right
) > 0){
if
(
$left
[0] >
$right
[0]){
$res
[] =
$right
[0];
$right
=
array_slice
(
$right
, 1);
}
else
{
$res
[] =
$left
[0];
$left
=
array_slice
(
$left
, 1);
}
}
while
(
count
(
$left
) > 0){
$res
[] =
$left
[0];
$left
=
array_slice
(
$left
, 1);
}
while
(
count
(
$right
) > 0){
$res
[] =
$right
[0];
$right
=
array_slice
(
$right
, 1);
}
return
$res
;
}
$test_array
=
array
(100, 54, 7, 2, 5, 4, 1);
echo
"原始数组 : "
;
echo
implode(
', '
,
$test_array
);
echo
"\n排序后数组:"
;
echo
implode(
', '
,merge_sort(
$test_array
)).
"\n"
;
原始数组 : 100, 54, 7, 2, 5, 4, 1
排序后数组:1, 2, 4, 5, 7, 54, 100
相关函数介绍:
array_slice() 函数在数组中根据条件取出一段值,并返回。
array_slice
(
array
$array
, int
$offset
[, int
$length
= NULL [, bool
$preserve_keys
= FALSE ]] ) :
array
array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
implode()函数将一个一维数组的值转化为字符串。
本篇文章就是关于PHP实现归并排序算法的方法介绍,希望对需要的朋友有所帮助!
-END-
声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!
▼请点击下方:“阅读原文”,在线查看全部文章内容!
以上是关于PHP实现归并排序算法(代码实例)的主要内容,如果未能解决你的问题,请参考以下文章
七大排序算法(插排,希尔,选择排序,堆排,冒泡,快排,归并)--图文详解