Python实现归并排序算法详解与代码示例

山海之间
山海之间
发布时间:2026-10-10| 3人浏览过
原创

本文深入解析Python中的归并排序算法,提供完整的递归实现代码。归并排序的时间复杂度稳定为NlogN,且性能不受输入数据形态影响。文章包含详细的代码逻辑说明及测试用例,帮助开发者掌握这一高效排序算法的核心实现。

归并排序的核心特性

归并排序(Merge Sort)是一种基于分治法的高效排序算法。与许多其他排序算法不同,归并排序在处理大规模数据时表现出显著的优势。其核心特性包括:

  • 时间复杂度稳定:无论输入数据是有序、逆序还是随机分布,归并排序的时间复杂度始终与 NlogN 成正比。这意味着它不会像快速排序那样在最坏情况下退化为 O(N²)。
  • 性能不受数据形态影响:由于算法逻辑固定,其执行效率不依赖于初始数据的排列状态,适合对性能稳定性有要求的场景。

Python 归并排序实现

在 Python 中,我们可以通过递归的方式简洁地实现归并排序。算法主要分为两个步骤:分解(Divide)和合并(Conquer/Merge)。

代码逻辑解析

以下是完整的 Python 实现代码。该代码包含 `mergesort` 主函数和 `merge` 辅助函数,能够正确处理整数列表的排序。

# coding:utf-8
def mergesort(seq):
  if len(seq)<=1:
    return seq
  mid=int(len(seq)/2)
  left=mergesort(seq[:mid])
  right=mergesort(seq[mid:])
  return merge(left,right)
def merge(left,right):
  result=[]
  i,j=0,0
  while i<len(left) and j<len(right):
    if left[i]<=right[j]:
      result.append(left[i])
      i+=1
    else:
      result.append(right[j])
      j+=1
  result+=left[i:]
  result+=right[j:]
  return result
if __name__=='__main__':
  print("本站测试结果:")
  seq=[4,5,7,9,7,5,1,0,7,-2,3,-99,6]
  print(mergesort(seq))

关键步骤说明

  1. 递归分解:`mergesort` 函数首先检查序列长度。如果元素少于或等于1,直接返回。否则,计算中点 `mid`,将序列分为左半部分 `left` 和右半部分 `right`,并递归调用自身进行排序。
  2. 合并过程:`merge` 函数负责将两个已排序的子序列合并为一个有序序列。它使用两个指针 `i` 和 `j` 分别遍历左右子序列,比较当前元素大小,将较小的元素追加到结果列表 `result` 中。
  3. 剩余元素处理:当其中一个子序列遍历完毕后,将另一个子序列的剩余元素直接追加到结果列表中,因为这部分元素已经是有序的。

测试与验证

为了验证算法的正确性,我们使用了一组包含正数、负数和重复值的混合序列进行测试。测试代码如下:

if __name__=='__main__':
  print("本站测试结果:")
  seq=[4,5,7,9,7,5,1,0,7,-2,3,-99,6]
  print(mergesort(seq))

该测试用例涵盖了多种边界情况,包括负数(-99, -2)、零(0)以及重复元素(7, 5)。运行上述代码将输出排序后的序列,验证算法能够正确处理复杂数据。

辅助工具推荐

对于希望直观理解排序算法执行过程的开发者,可以使用在线动画演示工具。该工具支持多种排序算法的可视化演示,包括插入排序、选择排序、冒泡排序、归并排序、希尔排序和快速排序。

工具链接:排序算法在线演示工具

以上就是Python归并排序算法实现的详细内容,更多关于Python算法优化的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。