【算法基础】归并排序(原理、过程、例题、代码)

news2024/11/25 3:40:15

一、归并排序原理

1. 算法介绍

归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

归并操作的工作原理如下:
第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置
第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针超出序列尾
将另一序列剩下的所有元素直接复制到合并序列尾。
在这里插入图片描述
请添加图片描述

2. 算法性质

(1)归并排序的时间复杂度:O(NlogN)
(2)稳定

二、案例分析

(一)Question

1. 问题描述

给定你一个长度为 n的整数数列。请

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

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

相关文章

力扣 2309. 兼具大小写的最好英文字母

题目 给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。 最好 英文字母的大写和小写形式必须 都 在 s 中出现。 英文字母 b 比另一个英文字母 a 更…

前端食堂技术周刊第 68 期:Astro 2.0、Nuxt v3.1.0、Bun v0.5、TS 实现 Stage 3 Decorators 提案

美味值:🌟🌟🌟🌟🌟 口味:萝卜牛腩煲 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Astro 2.0Nuxt v3.1.0Bun v0.5TS 实现 Stage 3 Decorators 提案Turbore…

【算法突击】排序算法系列(一) | 程序员面试 | 冒泡排序 | 快速排序 | 归并排序

【排序算法】 冒泡排序 | 快速排序 | 归并排序 文章目录【排序算法】 冒泡排序 | 快速排序 | 归并排序1. 冒泡排序1.1 核心思想1.2 代码实现2. 快速排序2.1 核心思想2.2 时间复杂度2.2 代码实现3. 归并排序3.1 核心思想3.2 时间复杂度3.3 代码实现1. 冒泡排序 1.1 核心思想 将…

【接口自动化】接口间参数传递的一种解决方案

本文转载自:接口间参数传递的一种解决方案 做过接口自动化测试的同学肯定都熟悉在全链路测试过程中,很多业务场景的完成并非由单一接口实现,而是由很多接口组成的一条链路实现。例如你在淘宝上购物场景。 不同于单接口测试,这种链…

2 线性模型

文章目录一般流程问题引入数据集与测试集过拟合与泛化开发集监督学习和非监督学习问题分析训练集、验证集、测试集模型设计模拟训练过程课程代码课后习题代码课程来源: 链接文档参考: 链接以及 BirandaのBlog!一般流程 对于一般的线性模型来…

微信小程序 Springboot校园招聘求职系统

基于微信小程序的校园求职系统的设计基于现有的手机,可以实现首页、个人中心、岗位类型管理、用户管理、企业管理、招聘信息管理、应聘信息管理、系统管理等功能。方便用户对首页、招聘信息、我的等详细的了解及统计分析 一个基本的程序包含app.json、project.confi…

谈谈SpringBoot(二)

1. Spring Boot缓存 1.1 JSR-107 Spring从3.1开始定义了org.springframework.cache.Cache 和org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR-107)注解简化我们开发。 Cache接口为缓存的组件规范定义…

day23|93.复原IP地址、78.子集、90.子集II

93.复原IP地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 &q…

layui框架学习(2:颜色、图标、动画)

B站教学视频中对Layui的颜色没有专门介绍,而Layui官方教程中虽然有颜色章节,但也只是简单介绍了基色调、辅色调、中性的颜色的概念及用途,最后说明layui 内置了七种背景色,以便用于各种元素中,如:徽章、分割…

Go语言基础入门第二章

Go语言环境安装 下载地址:https://golang.google.cn/dl/ 下载完安装包直接安装即可,安装完毕后,打开cmd控制台,输入”go version“查看是否安装成功以及对应安装版本。 配置环境变量Go语言需要一个安装目录,还需要一个…

Spring Cloud_Eureka服务注册与发现

目录一、Eureka基础知识1.什么是服务治理2.什么是服务注册3.Eureka两组件二、单机Eureka构建步骤1.IDEA生成eurekaServer端服务注册中心2.服务提供者3.服务消费者代码链接 https://github.com/lidonglin-bit/cloud 一、Eureka基础知识 1.什么是服务治理 SpringCloud封装了Ne…

金融风控09

迁移学习 为什么要? 源域样本与目标域样本分布有区别,目标域样本量不够 平时建模用的迁移学习场景 1、新开某个消费分期场景样本量少,需要用其他场景的数据建模 2、业务被迫停滞3个月再重启,大部分训练样本比较老旧&#xff…

含分布式光伏的配电网集群划分和集群电压协调控制(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

激光在大气中传输特性

在光纤通信中,单模光纤在波长1.55μm窗口具有巨大的潜在带宽和极低的损耗,传输数字信号的容量已能达到10Tb/s,每信道光源功率仅需1mW左右,无中间放大的距离超过100km。而且,光纤作为光波导,红外…

PostSharp Ultimate添加模式和线程安全

PostSharp Ultimate添加模式和线程安全 PostSharpUltimate允许开发人员通过将重复的工作从人身上转移到机器上,从而消除样板代码。它包含最常见模式的现成实现,并为您提供了为自己的模式构建自动化的工具。开发人员通常根据设计模式进行思考,…

Go语言基础入门第一章

Go语言基础入门 Go语言的logo 为什么需要一个新的语言最近十年来,C/C在计算机领域得到了很好的发展,并没有新的系统编程语言出现。对开发程度和执行效率在很多情况下并不能兼得。要么是执行效率高,但是低效的开发和编译,如C&…

Redux Toolkit + React + Tailwind CSS 学习心得

Redux Toolkit React Tailwind CSS 学习心得 预览地址:https://goldenaarcher.com/movie-app-home-only,只实现了一个简单的首页功能,API 用的是 the Movie Database,不想用 API 的也可以装一个 faker-js/faker 用来随机生成伪…

学生护眼灯怎么选择?分享适合学生的护眼灯

现阶段的青少年与儿童的近视率非常高,选择一款好的台灯能够保证双眼的健康,首先先看亮度是否合理,不能刺眼,选择三基色灯管,光很柔和,看频闪,好的护眼台灯可以做到无可视频闪,是的视…

移动web适配和Less

移动web适配和Lessrem 适配rem 单位媒体查询flexible.js如何把设计稿的px转换为remLESSLess注释less 运算less 嵌套less 变量less导入less 导出控制当前Less文件导出less 禁止导出小结rem 适配 rem 单位 rem 是一个相对单位,1rem 就是 html 文字的大小 比如 /* …

Java基础10:常用API

Java基础10:常用API一、Math二、System1. currentTimeMillis2. arraycopy三、Runtime四、Object1. toString2. equals3. clone五、Objects六、BigInteger1. 构造方法(获取BigInteger)2. 常用方法七、BigDecimal1. 构造方法(获取Bi…