php实现归并排序

简介: php实现归并排序

function mergeSort($arr) {
$length = count($arr);

if ($length <= 1) {
    return $arr;
}

$mid = (int)($length / 2);
$left = array_slice($arr, 0, $mid);
$right = array_slice($arr, $mid);

$left = mergeSort($left);
$right = mergeSort($right);

return merge($left, $right);

}

function merge($left, $right) {
$result = [];
$leftLength = count($left);
$rightLength = count($right);
$i = $j = 0;

while ($i < $leftLength && $j < $rightLength) {
    if ($left[$i] <= $right[$j]) {
        $result[] = $left[$i];
        $i++;
    } else {
        $result[] = $right[$j];
        $j++;
    }
}

while ($i < $leftLength) {
    $result[] = $left[$i];
    $i++;
}

while ($j < $rightLength) {
    $result[] = $right[$j];
    $j++;
}

return $result;

}

// 示例使用
$numbers = [5, 2, 8, 12, 3];

$sortedNumbers = mergeSort($numbers);

print_r($sortedNumbers);

目录
相关文章
|
2月前
|
数据处理 PHP 开发者
深入理解PHP中的数组排序技巧
【9月更文挑战第13天】在PHP编程中,处理数组数据是一项常见而重要的任务。本文旨在揭示数组排序的多种方法及其适用场景,通过直观的代码示例和深入浅出的解释,引导读者掌握PHP数组排序的技巧,提升编程效率和代码质量。
|
6月前
|
搜索推荐 PHP
PHP实现快速排序
`quickSort` 函数实现了一个快速排序算法。当数组长度小于或等于1时,直接返回数组。选择第一个元素作为基准,遍历数组将元素分别放入左(小于基准)和右(大于等于基准)两个子数组。递归地对子数组进行排序,最后合并结果。示例展示了对一个无序数组排序并输出。
33 0
|
6月前
|
PHP
PHP实现桶排序
`bucketSort`函数用于对数组进行排序。它首先找出数组的最小值和最大值,计算出桶的数量,然后将元素分配到相应桶中。每个桶内部进行排序后,再合并所有桶中的元素以得到最终有序数组。示例展示了如何使用该函数对一个无序数组进行排序并打印结果。
22 0
|
11月前
|
算法 小程序 PHP
PHP实现递归排序
在leetcode练习算法的时候,发现一个算法需要用到递归。 递归是个好东西,但是吧,一般不理解其精髓的,很难写出一个好的递归。 递归其实就是函数本身直接或者间接地调用自身的一种编程方法(我自己调用我自己~),也可以理解为有反复执行过程的一种方法,这个就与循环非常相似,但是递归调用的函数中必须要有终止条件,也就是一定
49 1
|
存储 搜索推荐 算法
用PHP实现经典的5种排序算法
排序算法是一种将一组无序的数据元素按照某个规则(大小、字母序等)排列成有序的序列的算法。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。
103 0
|
数据安全/隐私保护 索引
php-冒泡排序
php-冒泡排序
78 0
php-冒泡排序
|
存储 PHP 块存储
php-递归
php-递归
115 0
|
算法 搜索推荐 PHP
常见排序算法及PHP实现
冒泡排序 是一种交换排序,它的基本思想是:对待排序记录从后往前(逆序)进行多遍扫描,当发现相邻两条记录的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,值较小的记录将逐渐从后面向前移动,就像气泡在水中向上浮一样。
常见排序算法及PHP实现
|
PHP
【PHP】冒泡排序
【PHP】冒泡排序
89 0
PHP递归
代码如下