<?php
// 归并排序主程序
function mergeSort($arr) {
$len = count($arr);
if ($len <= 1) {
return $arr;
} // 递归结束条件, 到达这步的时候, 数组就只剩下一个元素了, 也就是分离了数组
$mid = intval($len / 2); // 取数组中间
$left = array_slice($arr, 0, $mid); // 拆分数组0-mid这部分给左边left
$right = array_slice($arr, $mid); // 拆分数组mid-末尾这部分给右边right
$left = mergeSort($left); // 左边拆分完后开始递归合并往上走
$right = mergeSort($right); // 右边拆分完毕开始递归往上走
$arr = merge($left, $right); // 合并两个数组,继续递归
return $arr;
}
// merge函数将指定的两个有序数组(arrA, arr)合并并且排序
function merge($arrA, $arrB) {
$arrC = array();
while (count($arrA) && count($arrB)) {
// 这里不断的判断哪个值小, 就将小的值给到arrC, 但是到最后肯定要剩下几个值,
// 不是剩下arrA里面的就是剩下arrB里面的而且这几个有序的值, 肯定比arrC里面所有的值都大所以使用
$arrC[] = $arrA[0] < $arrB[0] ? array_shift($arrA) : array_shift($arrB);
}
return array_merge($arrC, $arrA, $arrB);
}
$arr = [1,21,2,3,333,4,23];
$res = mergeSort($arr,0,count($arr)-1);
print_r($res);
相关推荐
Win10 IPv6 远程桌面连接(小米路由器)
背景 由于家里是移动网,且懒得向运营商要公网IPv4,所以想着用IPv6试一下。 家里的环境是这样的: 宽带用的是移动的,没有公网IPv4,但经过测试发现IPv6是公网的 上网通过光猫拨号,而不是通过路由器 路由器是小米AC2100 光猫更改为桥接模式 路由器必须要通过PPPoE拨号,如果是光猫拨号,那么要找对应的维护人员辅助你把光猫改成桥接模式。通过PPPoE拨号路由器就能够拿到公网的IPv6网段,也就可以给底下的其他服务分配公网IPv6了。而如果是光猫拨号,那么只有路由器可以拿到公网的IP。其他的设
php 归并排序,PHP实现归并排序算法(代码实例)
归并排序(也可以称之为合并排序)是一种基于O (n log n)比较的排序算法。大多数实现都会产生一个稳定的排序,这意味着实现在排序后的输出中保留相等元素的输入顺序。下面我们给大家介绍如何用PHP实现归并排序算法。PHP代码示例如下:...
非sudo用户如何安全使用Docker:Rootless模式实战指南
Docker Rootless模式是一种基于Linux用户命名空间(userns)的容器运行时安全机制,它通过UID/GID映射、fuse-overlayfs文件系统和slirp4netns网络栈,在不提升权限的前提下实现容器隔离。其核心原理是将容器内root身份映射为宿主机非特权用户,从而规避docker组等价root的安全风险。相比传统root模式,Rootless在权限控制、逃逸防护和多租户隔离方面具备天然优势,适用于CI/CD流水线、Kubernetes边缘节点及受限生产环境。本文聚焦无sudo权限
PHP实现排序算法----归并排序(Merging Sort)
基本思想:归并排序:就是利用归并(合并)的思想实现的排序方法。它的原理是假设初始序列含有 n 个元素,则可以看成是 n 个有序的子序列,每个子序列的长度为 1,然后两两归并,得到 ⌈ n / 2⌉ (⌈ x ⌉ 表示不小于 x 的最小整数)个长度为 2 或 1 的有序序列;再两两归并,······,如此重复,直至得到一个长度为 n 的有序序列为止,这种排序方法就成为 2 路归并排序。一、归并的过程:
长安车机破解后能干啥?分享我的UNI-K车机安装第三方应用与优化体验实录
本文详细记录了长安UNI-K车机破解后的实用玩法与深度优化指南,包括安装第三方应用、导航体验升级、影音系统改造及系统美化等。通过工具箱和升级技巧,车主可以大幅提升用车体验,解锁更多隐藏功能。
Doris数据过期策略:自动清理历史数据
在数据的世界里,就像我们的房间会堆满各种东西一样,数据库也会积累大量的数据。随着时间的推移,很多历史数据可能不再经常被使用,但它们却占据着宝贵的存储空间。Doris是一款强大的数据库,为了让它能更高效地运行,合理地管理数据,我们就需要一种方法来自动清理那些不再需要的历史数据。本文的目的就是详细介绍Doris的数据过期策略,让大家知道如何利用这个策略来实现自动清理历史数据。范围涵盖了从基本概念到实际操作的各个方面。本文会先介绍一些和Doris数据过期策略相关的术语,让大家对一些专业词汇有个基本的了解。
PHP实现 归并排序
<?php /** * Created by PhpStorm. * User: baimayou * Date: 19-3-23 * Time: 下午9:44 * 归并排序 * 思想:先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了 * 解法:整体分为拆分和合并。拆分使用递归,设置高低指针 $low = 0,...
YOLOv8 交通流量监测详解
本文介绍了一个基于YOLOv8的交通流量监测系统,该系统通过深度学习技术实现车辆实时检测、跟踪和分类。系统核心功能包括:1)使用YOLOv8模型检测道路车辆并进行持续跟踪;2)按方向和车型统计车流量;3)支持多区域流量监测和数据可视化。文章提供了完整的代码实现示例,涵盖基础车辆检测、视频流处理和高级数据分析功能。系统还可进一步优化性能,如使用轻量级模型、GPU加速等,并建议扩展车速估算、密度分析等功能。该方案为交通管理提供了有效的实时监测和决策支持工具。
php实现归并算法
原理:将原来的序列,拆分为单个的小序列(整个数组未改变,只是指针指向下标)<?php //交换函数(没用到) function swap(array &$arr,$a,$b){ $temp = $arr[$a]; $arr[$a] = $arr[$b]; $arr[$b] = $temp; } //归并算法总函数 function MergeSort(arr...
自然语言处理在智能客服系统中的应用
引言与背景 1.1 书籍的目的和内容概述 《自然语言处理在智能客服系统中的应用》旨在探讨自然语言处理(NLP)技术在智能客服系统中的应用,帮助读者理解NLP的核心概念及其在解决实际业务问题中的关键作用。随着人工智能技术的快速发展,自然语言处理成为构建智能客服系统的核心模块之一。本书将深入解析NLP
YOLO26涨点改进 | 检测头Head创新改进篇 | 利用RFAConv感受野注意力卷积改进YOLO26检测头,RFAHead感受野注意力检测头,助力小目标检测高效涨点
YOLO26作为轻量化目标检测模型的新一代标杆,凭借高效的Backbone与Neck结构,在实时检测场景中表现突出,但原生检测头仍存在核心痛点——感受野固定、小目标特征感知薄弱、多尺度目标适配不足,导致在小目标密集、复杂背景遮挡等场景中漏检率偏高、定位精度不足。
php实现归并排序
php实现归并排序: 这个排序我看了很久,大多数代码是从百度上看到的,因为我也是一个php的菜菜的,不过觉得应该把思路写下来,一方面是自己要总结一下,一方面是自己把思路写出来如果有哪里不对的地方也希望有人能帮我指正一下。 我感觉归并排序的归就在于递归,并就在于合并。 归并排序是分治法的一个重要的体现,所以我们需要用分治法的思想去考虑归并排序。它拿到一个数组了以后,这个数组就好像一个棍子,先将
25 - GRACE Mascon数据缺失月份数据插值
本篇基于文章的相关内容和文章公开的奇异谱分析(SSA)插值算法程序包,对grace Mascon数据种缺失的月份进行 插值 ,总结了使用程序包的相关过程,可以将该程序应用到其他数据处理插值计算中。
php 归并排序,php 实现归并排序
您现在的位置是:网站首页>>PHP>>phpphp 实现归并排序发布时间:2019-02-19 15:30:39作者:wangjian浏览量:538点赞量:0之前我总结过一些php排序方法:php 数组排序,今天我看到了一个名为归并排序的算法,感觉比较有意思,就研究了一下1:归并排序演示(资料来自上述地址)2:实例:...
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
php的归并排序,php归并排序算法示例
看指针型的归并算法好麻烦,自己动手写一个,供自己学习用。class="php" name="code">/*** php 归并排序算法示例。这是无指针型的,代码容易看懂。* 实际生产应用中,用指针速度更快。** 输出如下:**start : 0 end: 1 临时数组:array ( 0 => 30, 1 => 66, )start : 2 end: 3 临时数组:array (...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
php 归并排序,详解PHP归并排序的实现
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表。归并排序的一个缺点是它需要存储器有另一个大小等于数据项数目的数组。如果初始数组几乎占满整个存储器,那么归并排序将不能工作,但是如果有足够的空间,归并排序会是一个很好的选择。假设待排序的序列:4 3 7 9 2 8 6先说思路,归并排序的中心思想是将两个已经排序好的序列,合并成一个排序的序列。上面的序列可以分成:4 3 7 9...
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
PHP 归并排序
1、原理归并排序是一种概念上最简单的排序算法,与快速排序一样,归并排序也是基于分治法的。归并排序将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后再将他们合并成一个子序列。合并两个子序列的过程也就是两路归并。 2、复杂度归并排序是一种稳定的排序算法,归并排序的主要问题在于它需要一个与待排序数组一样大的辅助数组空间。由于归并排序每次划分时两个子序列的长度基本一样,所以归并排序最好...
php实现归并排序算法
php实现归并排序算法 归并排序算法的复杂度是O(nlogn)。 代码如下,完整代码在github上面,只需要clone下来执行composer install然后执行 php artisan test:mergeSort 就可以看到结果了 /** * 归并排序把数据逐步分解,然后对分解后的数据进行排序,最后合并到一起 * * @return mixed */ public function handle() { $this-&
php实现归并排序,PHP实现 归并排序
/*** Created by PhpStorm.* User: baimayou* Date: 19-3-23* Time: 下午9:44* 归并排序* 思想:先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了* 解法:整体分为拆分和合并。拆分使用递归,设置高低指针 $low = 0,$height = len-1; 找出中间点 m...
php 归并排序,PHP排序算法系列之归并排序详解
本篇讲解PHP排序算法系列之归并排序详解。归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程归并排序的核心就是如何将两个有序序列进行合并,假定有两个有序...
php 归并排序
<?php mergeSort(&$arr,$left,$right,$temp=array()){ if($left<$right){ $mid = floor(($left+$right)/2); mergeSort($arr,$left,$mid,$temp); mergeSort($arr,$mid+1,$right,$temp); merge...
PHP 实现归并排序算法
PHP 实现归并排序算法 算法原理 原理: 利用递归,先拆分、后合并、再排序。 步骤: 均分数列为两个子数列 递归重复上一步骤,直到子数列只有一个元素 父数列合并两个子数列并排序,递归返回数列 代码实现 // 归并排序主程序 function mergeSort($arr) { $len = count($arr); if ($...
PHP 实现归并排序(Merge Sort)
PHP 归并排序(Merge Sort) 归并排序 时间复杂度属于 O(nlogn) 级别的,相比于 O(n^2) 级别的排序算法,在处理大的数据量时,它的优势非常明显,下面通过原理图和代码演示介绍归并排序是如何实现 O(nlogn) 时间复杂度级别的。 1.将数组中有序的两部归并成一个过程原理图 在学习 归并排序 之前,先学习一下使用临时空间将数组中有序的两个部分归并成一个有序部分的原理图 Tips:需要额外使用空间,最后将排好序的值赋值给原来的变量中。 合并代码如下: <?php funct
php 归并排序非递归实现,排序算法学习之路——归并排序
我们先看归并排序的定义归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。简单来说就是将两个有序表合并成一个有序表。我们先通过下图来了解一下归并排序的流程。下面我们来看如何分解然后再合并的步骤1...
归并排序算法(php)
概述: 归并排序的算法思想:讲两个或两个以上的元素有序序列合并为一个有序序列。其中,二路归并排序是最常见的归并排序。 /** * 归并排序算法 */ function mergeSort(&$arr) { $len = count($arr);//求得数组长度 mSort($arr, 0, $len-1); } /** * 实际实现归并排序的程序 * @param &$arr array 需要排序的数组 * @param $left int 子序列的左下标值 *
1万+



被折叠的 条评论
为什么被折叠?



