PHP 归并排序

PHP:归并排序 函数用于合并两个有序的子数组。它通过比较两个子数组的第一个元素,将较小的元素放入结果数组,并将该元素从原数组中移除。最后,将剩余的元素依次放入结果数组。这样,就完成了两个子数组的合并。归并排序是一种高效的排序算法,它通过将待排序的数组划分成较小的数组,分别进行排序,最后将已排序的子数组合并成一个完整的有序数组。本文将详细介绍归并排序的原理和实现,并附上相应的源代码。1.1 分割:将待排序数组从中间位置分割成两个子数组,直到每个子数组只包含一个元素。1.2 合并:将两个有序的子数组合并成一个有序的数组。 阅读详情
作者: 溪水清澈
<?php

/**
 * 归并排序
 */
function guiSort( $arr )
{
    // 计算数组里的个数, 如果只有一个成员, 直接返回
    $count = count( $arr );
    if( $count <= 1 )
    {
        return $arr;
    }

    //如果成员很多, 那么对左边 归并, 对右边归并
    $mid = floor( $count / 2 );
    $left = guiSort( array_slice( $arr, 0, $mid ) );
    $right = guiSort( array_slice( $arr, $mid ) );

    // 左半数组的大小, 右半数组的大小
    $leftLen = count( $left );
    $rightLen = count( $right );

    //返回值保存的变量
    $ret = array();
    $li = 0;
    $ri = 0;

    while( 1 )
    {
        // 如果左边全合并了, 则退出循环
        if( $li >= $leftLen )
        {
            $flag = 'left';
            break;
        }
        // 如果右边全合并了, 则退出循环
        if( $ri >= $rightLen )
        {
            $flag = 'right';
            break;
        }

        //如果左边的数小, 则左边加入返回数组
        if( $left[ $li ] <= $right[ $ri ] )
        {
            $ret[] = $left[ $li ];
            $li ++;
        } else
        {
            $ret[] = $right[ $ri ];
            $ri ++;
        }

    }

    if( $flag == 'left' )
    {
        //如果首先合并完的是左边, 则把右数组剩余的都加到返回数组
        $ret = array_merge( $ret, array_slice( $right, $ri ) );
    } elseif( $flag == 'right' )
    {
        $ret = array_merge( $ret, array_slice( $left, $li ));
    }

    return $ret;
}


// 测试代码
$arr = range( 1, 100 );
shuffle( $arr );
var_dump( $arr );
$res = guiSort( $arr );
var_dump( $res );

17、神经网络训练算法与高阶模糊Cohen - Grossberg神经网络稳定性分析 本文介绍了一种新的数据驱动算法用于神经网络训练,该算法继承三次样条权重函数的优点,具有简单架构和良好泛化性能,并通过并行机制显著提升训练速度。同时,研究了高阶模糊Cohen-Grossberg神经网络(HOFCGNN)在可变及无界延迟下的稳定性,利用M矩阵理论和向量Lyapunov函数方法,证明了系统平衡点的存在性、唯一性和全局指数稳定性。研究成果为神经网络的高效训练与稳定应用提供了理论支持和技术路径。 阅读详情

相关推荐

汽车售后诊断 ODX 和 OTX 对比分析报告

在汽车行业不断发展的当下,汽车售后诊断技术对于保障车辆性能、维护车主权益以及提升汽车品牌服务质量起着至关重要的作用。随着汽车电子化程度的不断提高,售后诊断所涉及的数据和流程愈发复杂,这就促使行业需要更加标准化、高效化的诊断技术方案。开放诊断数据交换(ODX)和开放测试序列交换(OTX)便是在这样的背景下应运而生的两种重要标准,它们为汽车售后诊断提供了强大的支持。本报告将深入剖析 ODX 和 OTX 的技术细节、应用场景、优势与挑战,并进行全面的对比,旨在为汽车行业从业者在选择和应用这两种标准时提供有价值的参

芊言凝语 1638

php 归并排序,详解PHP归并排序的实现

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表。归并排序的一个缺点是它需要存储器有另一个大小等于数据项数目的数组。如果初始数组几乎占满整个存储器,那么归并排序将不能工作,但是如果有足够的空间,归并排序会是一个很好的选择。假设待排序的序列:4 3 7 9 2 8 6先说思路,归并排序的中心思想是将两个已经排序好的序列,合并成一个排序的序列。上面的序列可以分成:4 3 7 9...

weixin_34039159的博客 450

学习笔记--在线强化学习、离线强化学习、连续强化学习的区别(4)

在连续强化学习中,状态和动作都是连续的,这意味着智能体可以采取无限数量的动作,并且状态空间是连续的,而不是离散的点。- 策略评估和模型选择:在离线学习中,如何有效地评估不同策略和模型的性能,是一个重要的研究问题。- 连续学习和迁移学习:在线学习中,学习者需要不断在不同任务和环境中学习,研究者致力于研究如何将之前学到的知识迁移到新任务中,以实现更高效的学习和决策。- 连续动作选择和优化:在连续动作空间中,智能体对动作的选择是无限的,研究者在连续强化学习中通常关注如何有效地选择连续动作,以达到最优决策策略。

hzlalb的博客 3601

php 归并排序,PHP排序算法系列之归并排序详解

本篇讲解PHP排序算法系列之归并排序详解。归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程归并排序的核心就是如何将两个有序序列进行合并,假定有两个有序...

weixin_39732640的博客 197

半导体晶圆调平系统:基于最小二乘法的实现方案

基于最小二乘法的晶圆调平技术通过数学建模与工程实现的结合,解决了半导体量测中高精度平面对准的核心问题。实际应用中,需根据设备特性优化采样策略、校准传感器误差,并通过实时性优化满足高产能场景需求。该方案的模块化设计(如分离数据采集、拟合计算、补偿输出)也为后续功能扩展(如引入机器学习优化拟合模型)提供了灵活性。

品质生活,极致编程。 1181

R 语言 ggplot2 绘制精美高级全球地图

在本教程中,我们将学习如何使用R语言和ggplot2包绘制精美高级地图。ggplot2是一个功能强大的数据可视化包,它可以让我们创建漂亮、交互式的地图。我们将使用R中的一些其他包来处理地理空间数据,以便与ggplot2无缝协作。

Mrrunsen的博客 1867

PHP实现归并排序算法步骤详解

归并排序的算法我们通常用递归实现,先把待排序区间 [s,t] 以中点二分,接着把左边子区间排序,再把右边子区间排序,最后把左区间和右区间用一次归并操作合并成有序的区间 [s,t]。它的原理是假设初始序列含有 n 个元素,则可以看成是 n 个有序的子序列,每个子序列的长度为 1,然后两两归并,得到 ⌈ n / 2⌉ (⌈ x ⌉ 表示不小于 x 的最小整数)个长度为 2 或 1 的有序序列;第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;到了这里,我们的归并算法就完了。

weixin_43741253的博客 231

损失函数大汇总(五十九)(TopoInteraction Loss附公式推导与代码)

本文介绍了TopoInteraction Loss,一种用于多类别分割任务的拓扑交互约束损失函数。不同于传统拓扑损失关注单类别的连通性和孔洞数量,该损失重点约束不同类别之间的空间关系,包括互斥(exclusion)和包含(containment)两种典型拓扑关系。通过将全局拓扑约束转化为局部邻接检测,该损失能准确定位破坏预设拓扑关系的像素,并针对性施加惩罚。关键创新点在于:1)将包含关系转化为互斥约束;2)使用卷积运算高效检测非法邻接;3)仅对违规像素施加损失。实验表明,该方法能有效纠正类别间的错误接触,特

悦学共鸣,温柔以待,汇聚光芒,共同成长 350

PHP实现排序算法----归并排序(Merging Sort)

基本思想:归并排序:就是利用归并(合并)的思想实现的排序方法。它的原理是假设初始序列含有 n 个元素,则可以看成是 n 个有序的子序列,每个子序列的长度为 1,然后两两归并,得到 ⌈ n / 2⌉ (⌈ x ⌉ 表示不小于 x 的最小整数)个长度为 2 或 1 的有序序列;再两两归并,······,如此重复,直至得到一个长度为 n 的有序序列为止,这种排序方法就成为 2 路归并排序。一、归并的过程:

LSGOZJ的博客 8628

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 582

BF8815A

了解ADBMS1818芯片的人会发现,这款BF8815B和1818有着很多相似的东西,当你了解其中一款AFE之后,另一款你的上手也会特别快,下面文章是我针对1818梳理的一些重要知识点,此篇文章主要讲解BF8815B的一些差异点。

m0_61973119的博客 561

PHP 实现归并排序(Merge Sort)

PHP 归并排序(Merge Sort) 归并排序 时间复杂度属于 O(nlogn) 级别的,相比于 O(n^2) 级别的排序算法,在处理大的数据量时,它的优势非常明显,下面通过原理图和代码演示介绍归并排序是如何实现 O(nlogn) 时间复杂度级别的。 1.将数组中有序的两部归并成一个过程原理图 在学习 归并排序 之前,先学习一下使用临时空间将数组中有序的两个部分归并成一个有序部分的原理图 Tips:需要额外使用空间,最后将排好序的值赋值给原来的变量中。 合并代码如下: <?php funct

qq_38937634的博客 702

CATIA 3DEXPERIENCE R2019x VBA开发介绍

CATIA 3DEXPERIENCE R2019x VBA开发介绍 一、 什么是VBA? 【VBA的官方解释】 VBA(Visual Basic for Applications)是VisualBasic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是MicrosoftOffice软件。它也可说是一种应用程式视觉化的 Basic 脚本。 CATIA提供了多种二次开发的接口,其中包括自动化对象编程(Automation)和

WorkMan的博客 5063

php 归并排序,php 实现归并排序

您现在的位置是:网站首页>>PHP>>phpphp 实现归并排序发布时间:2019-02-19 15:30:39作者:wangjian浏览量:538点赞量:0之前我总结过一些php排序方法:php 数组排序,今天我看到了一个名为归并排序的算法,感觉比较有意思,就研究了一下1:归并排序演示(资料来自上述地址)2:实例:...

weixin_39586353的博客 161

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

php实现归并排序

php实现归并排序: 这个排序我看了很久,大多数代码是从百度上看到的,因为我也是一个php的菜菜的,不过觉得应该把思路写下来,一方面是自己要总结一下,一方面是自己把思路写出来如果有哪里不对的地方也希望有人能帮我指正一下。 我感觉归并排序的归就在于递归,并就在于合并。 归并排序是分治法的一个重要的体现,所以我们需要用分治法的思想去考虑归并排序。它拿到一个数组了以后,这个数组就好像一个棍子,先将

liwuqi123456的博客 1555

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

php的归并排序,php归并排序算法示例

看指针型的归并算法好麻烦,自己动手写一个,供自己学习用。class="php" name="code">/*** php 归并排序算法示例。这是无指针型的,代码容易看懂。* 实际生产应用中,用指针速度更快。** 输出如下:**start : 0 end: 1 临时数组:array ( 0 => 30, 1 => 66, )start : 2 end: 3 临时数组:array (...

weixin_32307599的博客 201

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

php 归并排序,PHP实现归并排序算法(代码实例)

归并排序(也可以称之为合并排序)是一种基于O (n log n)比较的排序算法。大多数实现都会产生一个稳定的排序,这意味着实现在排序后的输出中保留相等元素的输入顺序。下面我们给大家介绍如何用PHP实现归并排序算法。PHP代码示例如下:...

weixin_30845365的博客 318

PHP 实现归并排序算法

PHP 实现归并排序算法 算法原理 原理: 利用递归,先拆分、后合并、再排序。 步骤: 均分数列为两个子数列 递归重复上一步骤,直到子数列只有一个元素 父数列合并两个子数列并排序,递归返回数列 代码实现 // 归并排序主程序 function mergeSort($arr) { $len = count($arr); if ($...

w1366352655的博客 167

php实现归并排序算法

php实现归并排序算法 归并排序算法的复杂度是O(nlogn)。 代码如下,完整代码在github上面,只需要clone下来执行composer install然后执行 php artisan test:mergeSort 就可以看到结果了 /** * 归并排序把数据逐步分解,然后对分解后的数据进行排序,最后合并到一起 * * @return mixed */ public function handle() { $this-&

大头讲架构的博客 495

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...

xiangshui021的博客 173

php实现归并排序,PHP实现 归并排序

/*** Created by PhpStorm.* User: baimayou* Date: 19-3-23* Time: 下午9:44* 归并排序* 思想:先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了* 解法:整体分为拆分和合并。拆分使用递归,设置高低指针 $low = 0,$height = len-1; 找出中间点 m...

weixin_42498585的博客 243

php 归并排序非递归实现,排序算法学习之路——归并排序

我们先看归并排序的定义归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。简单来说就是将两个有序表合并成一个有序表。我们先通过下图来了解一下归并排序的流程。下面我们来看如何分解然后再合并的步骤1...

weixin_35702295的博客 157

归并排序算法(php)

概述: 归并排序的算法思想:讲两个或两个以上的元素有序序列合并为一个有序序列。其中,二路归并排序是最常见的归并排序。 /** * 归并排序算法 */ function mergeSort(&$arr) { $len = count($arr);//求得数组长度 mSort($arr, 0, $len-1); } /** * 实际实现归并排序的程序 * @param &$arr array 需要排序的数组 * @param $left int 子序列的左下标值 *

yshir 248

php归并排序

<?php $arr = array(9,1,5,8,3,7,4,6,7); foreach ($arr as $key => $value) { echo $value."\n"; } //一次归并算法 function merge(&$arr,$s,$m,$e){ $i=$s; $j=$m+1; $k=$s; ...

光九的博客 253

php 归并排序算法

## 归并排序    归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。      归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。 平均时间复杂度:O(nlogn) 最佳时间复杂度:O(n) 最差时间复杂度:O(nlogn) 空间复杂度

凄魅旋律 253
上一篇: 循环方式遍历文件夹
下一篇: 日历函数
风兮清扬
博客等级 码龄17年 4粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值