用 PHP 编写合并排序

2023-11-23

我尝试在 PHP 中编写一个涉及小数组的基本合并排序,但问题是它需要大约一分钟左右的时间来执行,并返回:

致命错误:允许的内存大小 536870912 字节已耗尽(已尝试 分配 35 个字节)在 /Users/web/www/merge.php 第 39 行

有谁知道代码可能出问题的地方(如果有的话)?我已经盯着这个看了一个小时了。

<?php

$array = array(8,1,2,5,6,7);
print_array($array);
merge_sort($array);
print_array($array);

function merge_sort(&$list){
    if( count($list) <= 1 ){
        return $list;
    }

    $left =  array();
    $right = array();

    $middle = (int) ( count($list)/2 );

    // Make left
    for( $i=0; $i < $middle; $i++ ){
        $left[] = $list[$i];
    }

    // Make right
    for( $i = $middle; $i < count($list); $i++ ){
        $right[] = $list[$i];
    }

    // Merge sort left & right
    merge_sort($left);
    merge_sort($right);

    // Merge left & right
    return merge($left, $right);
}

function merge(&$left, &$right){
    $result = array();

    while(count($left) > 0 || count(right) > 0){
        if(count($left) > 0 && count(right) > 0){
            if($left[0] <= $right[0]){
                $result[] = array_shift($left);
            } else {
                $result[] = array_shift($right);
            }
        } elseif (count($left) > 0){
            $result[] = array_shift($left);
        } elseif (count($right) > 0){
            $result[] = array_shift($right);
        }
    }

    print_array($result);exit;

    return $result;
}

function print_array($array){
    echo "<pre>";
    print_r($array);
    echo "<br/>";
    echo "</pre>";
}

?>

In your merge函数,你调用 count onright代替$right。 PHP 假定这是一个字符串常量(至少在 5.3.9 中),并且当转换为始终具有一个元素的数组时。所以count(right)始终为一,并且您永远不会退出第一次合并。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 PHP 编写合并排序 的相关文章

  • PHP 有效读取 csv 文件

    有几种使用 PHP 读取 CSV 文件的方法 我以前用过explode函数将每一行放入一个数组中 然后explode逗号并使用trim删除数据周围的任何引号 本来就很乱 PHP 5 现在有fgetcsv和 str getcsv 我猜这是这些
  • 如何将 Filesystem 类的 glob 方法与 StorageFacade 结合使用?

    这涉及到拉拉维尔 5 我可以看到Illuminate Filesystem Filesystem一个方法叫做glob pattern flags 0 不幸的是 这个方法并没有体现在默认的情况下FilesystemAdapter随 Larav
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 如何按键按字母顺序对 Ruby 哈希进行排序

    我正在尝试按键按字母顺序对哈希进行排序 但如果不创建自己的排序类 我似乎无法找到一种方法来做到这一点 我发现下面的代码可以按值排序 如果它是整数 我正在尝试修改它 但没有任何运气 temp ninjas 36 temp pirates 12
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to
  • php 在内容前插入十六进制字符数

    我正在将网站移动到新服务器 旧服务器有 php 5 3 2 新服务器有 php 5 5 9 Centos httpd Apache 2 2 26 我已经复制了文件 它工作正常 除了唯一奇怪的事情 一些奇怪的十六进制数字被插入到页面内容之前
  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数
  • Laravel 5 与 SAML 2 和现有 IDP 集成

    我使用 Laravel 5 我正在尝试将 SAML 2 0 与其集成 我找到了这个包 https github com aacotroneo laravel saml2 https github com aacotroneo laravel
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • PSR-4 代码库中条令生成器的解决方法

    在 Windows 机器上使用 Symfony 2 和 Doctrine 我正在尝试 从现有模式生成实体 php app console doctrine mapping import force CoreBundle annotation
  • PHP 中的正则表达式:找到第一个匹配的字符串

    我想在非常长的文本中找到第一个匹配的字符串 我知道我可以使用 preg grep 并获取返回数组的第一个元素 但是 如果我只需要第一场比赛 或者我知道提前只有一场比赛 那么这样做效率不高 有什么建议吗 预匹配 http www php ne
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 使用 php 和 symfony 从数组创建 Excel 文件

    我正在尝试使用 PHP 和 symfony 将数组导出为 XLS 文件 如下面的代码所示 创建 XLS 文件后 我只能获取数组的最后一行 并且它显示在文件的第一行中 似乎 lignes 变量没有增加 我不明白出了什么问题 有人可以帮忙吗 f
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar
  • PHP - 查找和比较日期

    你好 我有 foreach 我可以在其中获取数据库中的事件数据 我使用数据库中的日期名称 例如 event date 我需要在一个 div 中比较具有相同日期和输出的操作 例如我有这个事件 活动一 9 月 13 日 活动二 9 月 1 日
  • 哪个 PHP 5 版本最常用?

    当我开发将在不同配置的客户端 Web 服务 通常使用共享托管 上使用的应用程序时 我应该假设大多数 Web 服务器都具有哪个 PHP 5 版本 例如 5 2 x 5 3 x 等 在所有使用 PHP 版本 5 的网站中 有 84 9 使用版本
  • 处理查询字符串参数时 Codeigniter 缓存问题

    问候 我正在编写一个 CI Web 应用程序 它实现标准文件缓存功能 如下所示 this gt output gt cache n 我使用了段和查询字符串参数的组合 因此似乎遇到了问题 我在用例和输出类代码中看到的是 缓存仅基于段 像这样

随机推荐

  • 动画排序条形图,条形相互超越

    编辑 关键字是 条形图竞赛 您将如何重现此图表海梅 阿尔贝拉 in R 观看动画视觉资本网站 or on twitter 提供多个参考以防万一出现故障 我将其标记为ggplot2 and gganimate但任何可以从 R 生成的东西都是相
  • 如何处理 axios httpservice 可观察的响应?

    我想我快疯了 因为我对节点和打字稿还很陌生 我只是想以同步的方式检索 http get 请求的结果 Given import Injectable HttpService from nestjs common import from nes
  • 如何使用变量中的凭证运行 AWS SDK 版本 2?

    我的问题与另一个问题相同 如何使用变量中的凭证运行AWS SDK 但我使用的是 SDK 版本 2 它不再使用 Session 如果我理解正确的话 因此 我正在创建一个新客户端 并且我将凭据作为变量 我需要使用 IAM 服务 这是函数 fun
  • 从运行时类型创建 List<>

    我正在创建一个列表 其中 T 的类型是我通过反射知道的几个不相关的类 具有相同的构造函数参数 DataBase new ArrayList foreach Type T in Types DataBase Add new List
  • 如何在 spring-security 中取消 /** URL 模式的安全

    我正在尝试取消 模式的安全 但到目前为止我所有的尝试都是徒劳的 这就是我正在做的
  • 从 Action 获取参数

    如何将参数传递到Action
  • Sql 合并整行?

    我刚刚了解了 COALESCE 我想知道是否可以合并两个表之间的整行数据 如果不是 那么解决以下问题的最佳方法是什么 例如 我有这两个表并假设所有列都匹配 tbl 员工 Id Name Email Etc 1 Sue 2 Rick tbl
  • Git“efrror:RPC 失败;结果 = 55,HTTP 代码 = 0”推送

    我在这个问题上花了一整天 确实需要一些帮助 当我尝试推送相对较大的提交时 Writing objects 100 21 21 908 07 KiB 0 bytes s done Total 21 delta 17 reused 0 delt
  • 在打字稿中定义常量(离子应用程序)

    在我的 Ionic 应用程序中 我将常量定义为 constants ts export var CONSTANTS API ENDPOINT http localhost 3000 并将其导入为 import CONSTANTS from
  • AWS Cloudfront 分发多语言 Angular 应用程序

    我有一个 Angular 应用程序 它存储在 AWS S3 存储桶中并由 Cloudfront 分发 现在我想以多种语言分发我的应用程序 我已经翻译了我的角度应用程序以及我构建的每种语言 所以我的 S3 存储桶如下所示 de index h
  • URL 中的“&”编码问题

    我必须向我的 iPhone 应用程序中的 Web 服务发送 https GET 请求 该应用程序是在 Swift 1 2 中开发的 我正在尝试构造查询字符串参数 但在发送到服务器之前必须对其进行编码 一切正常 但当密码包含 字符时不起作用
  • jQuery 和 Google URL 缩短 API

    我正在尝试使用以下方法缩短网址http goo gl具有以下 jQuery 函数的 API ajax url https www googleapis com urlshortener v1 url key MY API KEY cross
  • Highcharts 实心标距宽度

    我还没有找到解决改变实体仪表数据图宽度的 API 或之前的问题 我可以轻松更改图表宽度 绘图宽度 绘图填充 弧形背景的内部和外部宽度 但不能更改图表 如何防止图表 绿色 与背景 白色 重叠 刚刚创建帐户 所以还不能插入图片 https ww
  • 如何覆盖 ApplicationTagLib#createLink 和 g:link 的标准行为?

    背景 我有 grails 1 3 7 应用程序 它使用g createLink and g link在许多页面上 最近 我决定对 url 映射进行重大更改 引入前面的路径元素 目前我有 controller action id 但想要拥有
  • 为什么我不应该使用 getter 来释放 Objective-C 中的属性?

    有人告诉我StackOverflow 用户释放属性时我不应该使用 getter 方法 property nonatmic retain Type variable synthesize variable wrong self variabl
  • Python端口转发/复用服务器

    我想让服务器侦听 UDP 端口 162 SNMP 陷阱 然后将此流量转发到多个客户端 同样重要的是源端口和地址保持不变 地址欺骗 我想最好的工具是Twisted or Scapy或者也许是香草插座 只是我在 Twisted 的文档中找不到任
  • 许多 Pandas 数据框的箱线图

    我有三个数据框 包含 17 组数据 其中 A B 和 C 组 A 如以下代码片段所示 import pandas as pd import numpy as np data1 pd DataFrame np random rand 17 3
  • 使用 RsaProtectedConfigurationProvider 对 app.config 部分进行加密/解密

    在安装程序期间 我们运行此方法来加密 app config 的部分 Get the application configuration file Configuration config ConfigurationManager OpenE
  • 如何在 Entity Framework Code First 中分离对象?

    没有Detach object entity on the DbContext 我是否能够首先分离 EF 代码上的对象 这是一个选项 dbContext Entry entity State EntityState Detached
  • 用 PHP 编写合并排序

    我尝试在 PHP 中编写一个涉及小数组的基本合并排序 但问题是它需要大约一分钟左右的时间来执行 并返回 致命错误 允许的内存大小 536870912 字节已耗尽 已尝试 分配 35 个字节 在 Users web www merge php