可能内存溢出的高级排序算法-归并排序

归并排序

归并排序在经典递归实现中需要的额外空间相对较多。这是因为在归并排序的过程中,需要与原始数组大小相同的额外空间来存储临时合并的数组。所以,其空间复杂度为O(n),其中n表示待排序数组的长度。在递归过程中,需要创建临时数组来存储分割后的子数组,这些临时数组会随着递归的进行不断地被创建和释放。

相比快速排序算法,归并排序在任何情况下都是O(nlogn),而快速排序在最坏的情况下是O(n的平方)

算法代码如下:

class Solution {public int[] sortArray(int[] nums) {return mergeSort(nums, 0, nums.length-1);}public static int[] mergeSort(int[] nums, int l, int r){if(l==r){int[] newsz=new int[1];newsz[0]=nums[l];return newsz;}int mid=(l+r)/2;int[] mergeSort1 = mergeSort(nums, l, mid);int[] mergeSort2 = mergeSort(nums, mid + 1, r);int[] sum=new int[mergeSort1.length+mergeSort2.length];int m=0,i=0,j=0;while (i<mergeSort1.length&&j<mergeSort2.length) {if (mergeSort1[i] <= mergeSort2[j]) {sum[m++] = mergeSort1[i++];} else {sum[m++] = mergeSort2[j++];}}while (j<mergeSort2.length){sum[m++]=mergeSort2[j++];}while (i<mergeSort1.length){sum[m++]=mergeSort1[i++];}return sum;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 0039.组合总和:回溯 + 剪枝

【LetMeFly】39.组合总和&#xff1a;回溯 剪枝 力扣题目链接&#xff1a;https://leetcode.cn/problems/combination-sum/ 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合…

[NSSCTF]prize_p5

前言 之前就学过反序列化的字符串逃逸 但是没怎么做题 补一下窟窿 题目 <?phperror_reporting(0);class catalogue{public $class;public $data;public function __construct(){$this->class "error";$this->data "hacker";}public functi…

Ali-Sentinel-链路控制

归档 GitHub: Ali-Sentinel-链路控制 链结构 参考&#xff1a;入口控制-处理链 具体实现 NodeSelectorSlot 给上下文设置统计节点 com.alibaba.csp.sentinel.slots.nodeselector.NodeSelectorSlot Spi(isSingleton false, order Constants.ORDER_NODE_SELECTOR_SLOT)…

2023-2024年度广东省职业院校学生技能大赛“ 网络系统管理”赛项竞赛规程(正式稿)

2023-2024年度广东省职业院校学生技能大赛“ 网络系统管理”赛项竞赛规程&#xff08;正式稿&#xff09; 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书&#xff0c;赛题&#xff0c;解析等资料&#xff0c;知识点培训服务 添加博主wx…

Python 中的下划线变量

Python 中的下划线变量 _name: 这是一种约定俗成的方式&#xff0c;表示这是一个私有变量&#xff0c;意味着它应该在类的内部使用&#xff0c;而不应该直接从外部访问。但实际上&#xff0c;Python并没有严格的私有化机制&#xff0c;这只是一种约定&#xff0c;因为外部仍然可…

Nginx高级配置与重写规则详解:从入门到实践

摘要: 本文将深入探讨Nginx的高级配置与重写规则,通过实际案例讲解如何优化Nginx的配置,实现URL重写、负载均衡、缓存优化等功能。文章旨在帮助读者更好地理解和应用Nginx,提升网站性能和用户体验。 一、Nginx简介 Nginx是一款高性能的HTTP和反向代理服务器,也是IMAP/POP…

代码随想录训练营day43

第九章 动态规划 part05 1.LeetCode. 最后一块石头的重量 II 1.1题目链接&#xff1a;1049.最后一块石头的重量II 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;B站卡哥视频 1.2思路&#xff1a;本题其实就是尽量让石头分成重量相同的两堆&#xff0c;相撞之后剩下…

【嵌入式DIY实例】-RFID门禁系统

DIY RFID门禁系统 文章目录 DIY RFID门禁系统1、RFID RC522介绍2、硬件准备与接线2、代码实现RFID(Radio Frequency Identification)简称为射频识别。 在本文中,将演示如何使用这项技术来实现门安全系统。 1、RFID RC522介绍 RFID rc522是一种基于射频的模块,其感应范围接…

Java中的多线程编程与并发控制

Java中的多线程编程与并发控制 一、引言 随着计算机硬件技术的不断发展&#xff0c;多核处理器已经成为现代计算机系统的标配。在这样的背景下&#xff0c;多线程编程与并发控制成为了Java开发中不可或缺的一部分。多线程编程能够充分利用多核处理器的并行计算能力&#xff0…

嵌入式软件工程师要会画板子吗?

答案:要 作为嵌入式软件工程师,本来就经常和硬件打交道。调试各种协议也要看波形,用示波器什么的。软件玩多了也会腻,可以玩玩硬件,自己从 0 做出一个东西的感觉是不一样的。职业生涯那么长,多尝试一些总是好的,一个软硬件都懂的人,才能更好的带项目。 博主玩过很多板…

个人学习-前端相关(1):ECMAScript 6-变量、模板字符串、解构表达式

前言 由于最近公司有接到一些小程序或者app相关的内容&#xff0c;可能考虑要做一些样例供参考。虽然在20年短暂学习和使用过vue2&#xff0c;但由于时间久远且技术发展太快&#xff0c;需要对一些旧知识进行巩固&#xff0c;新的内容进行学习。 ECMAScript 6简介 ECMAScrip…

设置Linux开发板开机自启动QT程序的报错解决办法

设置Linux开发板开机自启动QT程序报错解决办法 设置开发板开机自启动QT 打开 /etc/init.d/rsC 文件&#xff0c;添加以下内容 cd / ./my_start_run.shmy_start_run.sh 是自己编写的自启动脚本&#xff0c;内容例如下&#xff1a;(也可以将这些直接写到 /etc/init.d/rsC 文件…

C#算法之归并排序

算法释义&#xff1a;归并排序是一种分治算法&#xff0c;它采用分而治之的策略&#xff0c;将待排序的数组分成更小的部分&#xff0c;递归地对这些部分进行排序&#xff0c;然后将排序好的部分合并起来。它是一种比较稳定的排序算法。排序过程总结如下&#xff1a; 1、分解&a…

请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法和详细的解析。 题干 请编写一个函…

Python基础11-字符串处理

连接字符串 要将字符串连接在一起&#xff1a; greeting "Hello" name "Alice" message greeting ", " name "!" print(message)使用 str.format 进行字符串格式化 要将值插入字符串模板&#xff1a; message "{}, {}…

快来把wordpress图片放到免费的cloudflare R2上去

网站一直是用的wordpress&#xff0c;做了几年uploads下的图片已经大到了几十GB单位&#xff0c;VPS也一路升级&#xff0c;吃不消啊吃不消。 一直在想有什么办法能解决下这一大堆图片&#xff0c;网站逛了一圈发现cloudflare的R2有10G免费空间&#xff0c;而且本来就用的他家的…

Day17.一刷数据结构算法(C语言版) 654最大二叉树;617合并二叉树;700二叉搜索树中的搜索;98验证二叉搜索树

又是破防的一天...... 一.654最大二叉树 又是构造二叉树&#xff0c;昨天大家刚刚做完 中序后序确定二叉树&#xff0c;今天做这个 应该会容易一些&#xff0c; 先看视频&#xff0c;好好体会一下 为什么构造二叉树都是 前序遍历 题目链接&#xff1a;最大二叉树 文章讲解&…

Django框架之原始web框架优化

一、web应用框架简介及手撸web框架 软件开发架构详细&#xff1a;网络编程之网络架构及其趋势 - Xiao0101 - 博客园 (cnblogs.com) 软件开发架构分为两种&#xff1a; c/s架构&#xff1a;客户端软件(client)—服务端软件(server)b/s架构 &#xff1a;浏览器(Browser)------…

电子负载仪的远端控制

前言 最近研究了电子负载仪的远端控制&#xff08;区别于前面板控制&#xff09;&#xff0c;主要是用于程序控制&#xff0c;避免繁琐复杂的人工控制&#xff0c;举了南京嘉拓和艾维泰科的例子。 有纰漏请指出&#xff0c;转载请说明。 学习交流请发邮件 1280253714qq.com …

今日arXiv最热大模型论文:大模型也来看球,还能判断是否犯规

在足球世界&#xff0c;裁判的哨声可谓“千金难买”&#xff0c;因为它能直接决定俱乐部的钱包是鼓是瘪。但球场变化莫测&#xff0c;非常考验裁判的水平。 2022年卡塔尔世界杯上&#xff0c;半自动越位识别技术&#xff08;SAOT&#xff09;闪亮登场&#xff0c;通过12台摄像…