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实现归并排序算法(代码实例)的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之归并排序

python代码实现归并排序(Merge Sort )

php实现归并排序算法

七大排序算法(插排,希尔,选择排序,堆排,冒泡,快排,归并)--图文详解

[ 数据结构 -- 手撕排序算法第六篇 ] 归并排序(上)--递归方法实现

多种排序算法的思路和简单代码的实现