归并排序详解

什么是归并排序

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

归并排序的实现由两种方法:
自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);
自下而上的迭代;

实现方式

2-路归并排序

假定待排序表含有 n 个记录,则可以看成是 n 个有序的子表,每个子表长度为 1, 然后两两 归并,得到 ⌈ n / 2 ⌉ \lceil n/2 \rceil n/2个长度为2或1的有序表;再两两归并,……如此重复,直到合并成一个长度为 n 的有序表为止,这种排序方法称为2-路归并排序

例子:排序49、38、65、97、76、13、27

(1)首先将整个序列的每个关键字看成一个单独的有序的子序列

(2)两两归并,49 和 38 归并成{38 49} ,65 和 97 归并成{65 97},76 和 13 归并成{76,13}, 27 没有归并对象
(3)两两归并,{38 49) 和 {65 97}归并成{38 49 65 97}, {13,76} 和 27 归并成{13 27 76}
(4)两两归并,{38 49 65 97} 和{13 27 76} 归并成{13 27 38 49 65 76 97}

关于归并排序的性能参数

1、时间复杂度

O ( n l o g 2 n ) O(nlog_2n)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值