type
status
date
slug
summary
tags
category
icon
password
😀
归并排序(Merge Sort)是一种采用分治法(Divide and Conquer)的高效排序算法,由约翰・冯・诺伊曼在 1945 年提出。它的核心思想是将数组分成两个子数组,分别对它们进行排序,然后将排好序的子数组合并成一个最终的有序数组。

📝 主旨内容

一、算法步骤

1.分解(Divide):将数组从中间分成两个子数组,递归地对每个子数组进行排序。
2.解决(Conquer):当子数组长度为 1 或 0 时,视为已排序。
3.合并(Merge):将两个已排序的子数组合并成一个有序数组。

二、C 语言实现

三、举例分析

以数组 [38, 27, 43, 3, 9, 82, 10] 为例:

💡
1.分解阶段:
💡
2.合并阶段:

四、复杂度分析

💡
时间复杂度
每次分解将数组分成两半,每次合并需要线性时间
💡
空间复杂度
需要额外的临时数组来合并子数组。
💡
稳定性:稳定
相等元素的相对顺序在合并过程中保持不变。

🤗 总结归纳

算法
平均时间复杂度
最坏时间复杂度
空间复杂度
稳定性
归并排序
O(n log n)
O(n log n)
O(n)
稳定
快速排序
O(n log n)
O(n²)
O(log n)
不稳定
堆排序
O(n log n)
O(n log n)
O(1)
不稳定
插入排序
O(n²)
O(n²)
O(1)
稳定
 
💡
欢迎您在底部评论区留言,一起交流~