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

server/2024/10/20 11:51:00/

归并排序

归并排序在经典递归实现中需要的额外空间相对较多。这是因为在归并排序的过程中,需要与原始数组大小相同的额外空间来存储临时合并的数组。所以,其空间复杂度为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.ppmy.cn/server/18173.html

相关文章

W801学习笔记十一:掌机进阶V3版本之硬件改造

经由前面的笔记&#xff0c;我们打造出了一款游戏掌机。 W801学习笔记十&#xff1a;HLK-W801制作学习机/NES游戏机(总结) 然而&#xff0c;考虑到后续的游戏开发&#xff0c;总是忧心容量不足。故而&#xff0c;在正式展开软件开发工作以前&#xff0c;最终进行一下升级改造…

2024年最好用的10款ER图神器!

分享10款ER图工具&#xff0c;详细分析他们的功能特点、价格和适用场景&#xff0c;可以根据你的需求进行选择。ER图&#xff08;Entity-Relationship Diagram&#xff09;是数据库设计中常用的一种模型&#xff0c;用于描述实体之间的关系。这种图形化的表示方法旨在帮助人们理…

MIS微调SAM模型实时交互UI界面

前言 SAM模型的基本介绍可见SAM&#xff08;Segment Anything Model&#xff09;大模型使用--point prompt_sam大模型-CSDN博客 针对Meta团队去年发布的SAM大模型在医学图像分割领域表现性能较差的情况&#xff0c;笔者收集了一些MIS领域的数据集对SAM的架构进行fine tune&am…

企业微信私有化部署对接oauth2.0

1.添加依赖&#xff1a;JustAuth <dependency><groupId>me.zhyd.oauth</groupId><artifactId>JustAuth</artifactId><version>1.16.6</version> </dependency> 2.添加 ElephantAuthSource.java package com.elephant.devop…

每日一题:Int 和 Integer 有什么区别❓

int 和 Integer 在 Java 中都用于表示整数&#xff0c;但它们之间有几个关键区别&#x1f53d; 类型&#x1f308; int 是一个基本数据类型&#xff0c;表示固定范围的整数值。Integer 是一个类&#xff08;class&#xff09;&#xff0c;属于 Java 的封装类&#xff0c;用于…

DRF学习之三大认证

一、认证 1、自定义认证 在前面说的 APIView 中封装了三大认证&#xff0c;分别为认证、权限、频率。认证即登录认证&#xff0c;权限表示该用户是否有权限访问接口&#xff0c;频率表示用户指定时间内能访问接口的次数。整个请求最开始的也是认证。 &#xff08;1&#xff…

Java | Leetcode Java题解之第46题全排列

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> output new ArrayList<Integer>();for (i…

前端生成二维码

使用 Vue 生成二维码 在现代的 web 开发中&#xff0c;生成二维码是一项常见的需求。Vue 作为一个流行的前端框架&#xff0c;提供了多种方法来生成和显示二维码。本文将介绍如何使用 Vue 和一个流行的二维码生成库 qrcode 来生成二维码。 步骤 1&#xff1a;创建新的 Vue 项…