归并排序
**归并排序(Merge Sort)**是一种基于归并操作的排序算法,核心思想是将两个已经排序的序列合并成一个序列。
平均时间复杂度:
最好时间复杂度:
最坏时间复杂度:
空间复杂度:
稳定性:稳定
排序方式:非原地(Not-in-place)

归并算法又分为**自顶下下(Top-down)和自底向上(Bottom-up)**两种实现方式
自顶向下实现
申请一大小为俩个已排序序列之和的空间
始比较两个序列中的第一个元素,相对较小的元素放入之前申请的空间
取出较小元素所在队列的下一个元素,然后与另一队列之前取出的元素进行比较
重复步骤 2~3 直到某个队列提前遍历完成
将另一序列的所有元素直接放入申请的空间尾部

具体实现:
自底向上实现
自底向上就是把序列当作是由 n 个长度为 1 的子序列组成的序列,然后以 2 个序列为单元循环来回地合并子序列
将长度为 n 的序列拆分成 n 个子序列
每两个相邻的子序列进行归并操作,n 个子序列变成了 个新的子序列
对所有新的子序列,重复步骤 2,知道最终得到一个长度为 n 的子序列

具体实现:
最后更新于