Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php排序的算法(php归并排序算法)

作者:饮尽孤单   发布日期:2025-09-27   浏览:941

归并排序是一种分治算法,它将数组分成两个子数组,然后递归地对子数组进行排序,最后将两个有序的子数组合并成一个有序的数组。

以下是使用PHP实现归并排序的算法:

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

    $mid = floor($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 = [];
    while (count($left) > 0 && count($right) > 0) {
        if ($left[0] <= $right[0]) {
            $result[] = array_shift($left);
        } else {
            $result[] = array_shift($right);
        }
    }

    while (count($left) > 0) {
        $result[] = array_shift($left);
    }

    while (count($right) > 0) {
        $result[] = array_shift($right);
    }

    return $result;
}

// 示例用法
$arr = [5, 2, 8, 4, 1, 9, 6, 3, 7];
$sortedArr = mergeSort($arr);
print_r($sortedArr);

这段代码首先定义了一个mergeSort函数,它接受一个数组作为参数,并返回一个排序后的数组。如果数组长度小于等于1,直接返回原数组。

然后,将数组分成两个子数组,分别递归调用mergeSort函数进行排序。

最后,调用merge函数将两个有序的子数组合并成一个有序的数组。merge函数使用两个指针分别指向左右两个子数组的开头,比较两个指针所指的元素,将较小的元素放入结果数组,并将指针向后移动一位。当其中一个子数组的指针到达末尾时,将另一个子数组的剩余元素依次放入结果数组。

最后,示例代码使用一个无序数组进行测试,将排序后的数组打印输出。输出结果为Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )

上一篇:php注册验证提示

下一篇:php开发订单管理(php订单号生成机制)

大家都在看

php session用法

php 定义常量

phpisset函数

php html转图片

php后端

php爬虫框架

php读取csv文件

php+mysql动态网站开发

php 三元表达式

php文件加密

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站