归并排序

Posted tianye_guazi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。

归并排序是一种很稳定的排序算法,

function 归并排序($arr)
    {
        if (count($arr) <= 1) return $arr;
        $mid = floor(count($arr) / 2);
        $left = array_slice($arr, 0, $mid);
        $right = array_slice($arr, $mid);
        $left = $this->归并排序($left);
        $right = $this->归并排序($right);
        $data = $this->merge($left, $right);
        return $data;
    }
public function merge($a, $b)
    {
        //merge函数将指定的两个有序数组(arr1arr2,)合并并且排序
        //我们可以找到第三个数组,然后依次从两个数组的开始取数据哪个数据小就先取哪个的,然后删除掉刚刚取过///的数据
        $arr = array();
        while (!empty($a) && !empty($b)) {
            //这里不断的判断哪个值小,就将小的值给到arr,但是到最后肯定要剩下几个值,
            //不是剩下arrA里面的就是剩下arrB里面的而且这几个有序的值,肯定比arrC里面所有的值都大所以使用
            $arr[] = $a[0] < $b[0] ? array_shift($a) : array_shift($b);
        }
        return array_merge($arr, $a, $b);
    }

 

以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章

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

排序之外部排序

Python代码实现归并排序

Python代码实现归并排序

算法排序02——归并排序介绍及其在分治算法思想上与快排的区别(含归并代码)

排序算法之归并排序