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);

目录
相关文章
【java】poi 设置允许西文在单词中间换行
【java】poi 设置允许西文在单词中间换行
|
Java Maven
启动SpringBoot 错误: 找不到或无法加载主类 com.xx.xxApplication
1、在项目名称上右击–Reload from disk 2、清理项目里面的class文件进行重新编译, 鼠标点击右侧Maven,找到项目名称,然后点击Lifecycle中的clean/compile/install
2569 1
|
NoSQL Redis Docker
使用 Docker Compose 接管现有容器的文档
使用 Docker Compose 接管现有容器的文档
218 2
|
10月前
|
存储 人工智能 数据库
面向金融场景的大模型 RAG 检索增强解决方案
本方案为您介绍,如何使用人工智能平台 PAI 构建面向金融场景的大模型 RAG 检索增强解决方案。
仿SOUL社交友附近人婚恋约仿陌陌APP网站源码
仿SOUL社交友附近人婚恋约仿陌陌APP网站源码
406 0
仿SOUL社交友附近人婚恋约仿陌陌APP网站源码
Hutool工具BeanUtil.copyProperties实现自定义类型转换器之字符串转时间格式化
hutool工具BeanUtil.copyProperties在字符串转LocalDateTime时默认用的格式为yyyy-MM-ddTHH:mm:ss,所以需要自定义转换器才行,在转换时会优先使用自定义的。 在项目启动时执行一次此段代码即可。
804 0
|
数据采集 监控 安全
网络安全产品之认识入侵检测系统
随着计算机网络技术的快速发展和网络攻击的不断增多,单纯的防火墙策略已经无法满足对安全高度敏感的部门的需要,网络的防卫必须采用一种纵深的、多样的手段。因此,入侵检测系统作为新一代安全保障技术,成为了传统安全防护措施的必要、有效的补充。[《安全防御之入侵检测与防范技术》](http://xiejava.ishareread.com/posts/48309864/)介绍了入侵检测技术,今天让我们从入侵检测系统的工作原理、主要功能、主要类型及与入侵防御系统的关系与区别等方面认识入侵检测系统。
428 2
|
存储 算法 C语言
【C 言专栏】用 C 语言开发游戏的实践
【5月更文挑战第5天】本文探讨了使用C语言开发游戏的实践,包括选择适合的游戏类型(如贪吃蛇、俄罗斯方块),设计游戏框架、图形界面和逻辑,以及音效添加。文章还强调了性能优化、测试调试、跨平台挑战及未来发展趋势。对于热衷于C语言的开发者,这是一次挑战与乐趣并存的探索之旅。
443 0
【C 言专栏】用 C 语言开发游戏的实践
|
机器学习/深度学习 存储 Shell
浅析三种Anaconda虚拟环境创建方式和第三方包的安装
浅析三种Anaconda虚拟环境创建方式和第三方包的安装
1088 0
|
JavaScript
layUI数据表格可编辑扩展日期框
layUI数据表格可编辑扩展日期框
252 0