你们好,最近小时发现有诸多的小伙伴们对于归并排序算法,归并排序这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 归并排序(mergesort)是一种基于归并运算的有效排序算法,时间复杂度为O(nlogn)。
2、 归并排序是一个稳定的排序算法,也就是说无论什么数据,它的时间复杂度都是O(nlogn)。
3、 其中n是要排序的元素数量,log以2为基数。
4、 接下来是主流程。
5、 定义:mergesort(l,r)的意思是将区间[l,r]有序排列。
6、 步骤1:设置递归边界
7、 当l==r时,区间[l,r]已经是有序的,直接返回即可。
8、 第二步:设m为(l r)/2(四舍五入)。
9、 第三步:好,此时[l,m]和[m 1,r]已经按顺序排列好了。
10、 我们打开一个新的B数组,依次取出[l,m]和[m 1,r]开头的小数,放入B数组,然后跳过这个数。
11、 第四步:如果有间隔,还有一些余数怎么办?依次放入B数组。
12、 至此,归并排序完成,
13、 贴两张自己做的图(这是从大到小排序的)
14、 尝试实际应用,归并排序也可以用来求逆序对。
15、 以上是怎么写的归并排序详细及其应用,归并排序作为针灸的一种稳定的排序方法,如果熟练运用,会带来很大的帮助。
以上就是归并排序这篇文章的一些介绍,希望对大家有所帮助。