分治算法(5)_归并排序_排序数组

个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创

分治算法(5)_归并排序_排序数组

收录于专栏【经典算法练习
本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

1. 归并排序简介

分治思想:

归并排序的步骤:

归并排序的时间与空间复杂度

归并排序的优缺点: 

2. 题目链接

3. 题目描述

4. 解法

算法思路:

代码展示:

结果分析:

5. 快速排序与归并排序的比较 

算法思想:

时间与空间复杂度:

稳定性: 

实际应用:


1. 归并排序简介

分治思想:

分(Divide):将待排序数组分成两半,递归地对每一半进行归并排序。
治(Conquer):当子数组的大小为1时,数组自然是有序的。
合(Combine):将两个已排序的子数组合并成一个排序好的数组。 

归并排序的步骤:

分割:将数组不断分割,直到每个子数组只包含一个元素。
合并:将相邻的两个子数组合并成一个排序后的数组。合并的过程需要一个辅助数组来存放合并结果。 

归并排序的时间与空间复杂度

时间复杂度
最佳情况:O(n log n)
平均情况:O(n log n)
最坏情况:O(n log n)
归并排序的时间复杂度在所有情况下都是 O(n log n),因为它的合并过程总是需要遍历所有元素,而分割的深度是 log n。

空间复杂度
空间复杂度:O(n)
归并排序需要额外的空间来存储合并后的数组,因此其空间复杂度是 O(n)。

归并排序的优缺点: 

优点
稳定性:归并排序是一种稳定的排序算法,即相同元素的相对位置不会改变。
适用性广:对于大规模数据集或链表等数据结构,归并排序表现良好。
并行性:归并排序容易实现并行化,适合在多处理器环境中运行。
缺点
额外空间开销:需要 O(n) 的额外空间来存储合并结果&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值