Python实现归并排序

'''

归并排序原理:对于给定的一组数据,首先将要排序长度为n的列表或者数组折中分成两个子列表或者数组长度分别为(n/2),

第二次则分别将子序列分成总共4个子序列 每个子序列长度为(n/2/2) 以此继续分下去,直到子序列只剩下1个元素不能再分而停止.

最后将其两两归并,反复执行此过程,直到得到一个有序序列为止。

例如数组:

{38,65,97,76,13,27},具体排序过程如下:

拆分

1次:[38 65 97]  [76 13 27]

第2次:[38 65] [97]  [76 13] [27]

第3次:[38] [65] [97]  [76] [13] [27]

合并

第1次:[38 65] [97]  [13 76] [27]

第2次:[38 65 97]  [13 27 76]

第3次:[13 27 38 65 76 97]

'''

时间复杂度:归并排序由于运用了二叉树的策略所以在分策略上是logn的时间复杂度,每一层都必须比较所以n个元素,

总共有n层所以最后的时间复杂度是O(nlogn)

空间复杂度:过程开辟了长度为n的临时空间 所以空间复杂度是O(n)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容