python实现排序算法的可视化

冒泡排序可视化通过Python的matplotlib库实现,利用FuncAnimation动态展示排序过程。首先生成随机数据并创建柱状图,通过bubble_sort_step函数逐步执行排序,每次比较后用yield返回当前状态,update_plot函数更新图形界面,高亮正在比较的元素,实时显示迭代次数。将bubble_sort_step替换为其他排序算法的生成函数(如插入排序),即可扩展支持更多算法。关键点包括使用yield分步返回、FuncAnimation控制动画帧、颜色标识比较对象、interval调节动画速度,从而直观呈现算法执行流程。

python实现排序算法的可视化

排序算法可视化能帮助理解不同算法的工作过程。用 Python 结合 matplotlibFuncAnimation 可以轻松实现动态展示。下面是一个完整的冒泡排序可视化示例,你也可以扩展到其他算法。

1. 安装依赖库

确保已安装 matplotlib:

pip install matplotlib

2. 冒泡排序可视化代码

以下代码生成随机数组并动态展示冒泡排序过程:

立即学习“Python免费学习笔记(深入)”;

算家云 算家云

高效、便捷的人工智能算力服务平台

算家云 37 查看详情 算家云

import matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimationimport random

生成随机数据

data = [random.randint(1, 100) for _ in range(25)]n = len(data)

设置图形

fig, ax = plt.subplots()ax.set_title("Bubble Sort Visualization")bar_rects = ax.bar(range(len(data)), data, align="edge")ax.set_xlim(0, n)ax.set_ylim(0, int(1.1 * max(data)))

每次比较后更新的计数器

iteration = [0]text = ax.text(0.02, 0.95, "", transform=ax.transAxes)

def bubble_sort_step():

生成每一步的状态

for i in range(n):    for j in range(n - i - 1):        if data[j] > data[j + 1]:            data[j], data[j + 1] = data[j + 1], data[j]        yield data.copy(), j, j + 1  # 返回当前状态和比较位置yield data, -1, -1  # 排序完成

def update_plot(frame_data):iteration[0] += 1current_data, i, j = frame_datafor rect, val in zip(bar_rects, current_data):rect.set_height(val)text.set_text(f"Iterations: {iteration[0]}")

# 高亮正在比较的柱子for k, rect in enumerate(bar_rects):    if k == i or k == j:        rect.set_color('red')    else:        rect.set_color('skyblue')return bar_rects

开始动画

anim = FuncAnimation(fig, func=update_plot, frames=bubble_sort_step, repeat=False, interval=50, cache_frame_data=False)

plt.show()

3. 扩展到其他排序算法

只需替换生成步骤的函数即可。例如插入排序:

def insertion_sort_step():    for i in range(1, n):        key = data[i]        j = i - 1        while j >= 0 and data[j] > key:            data[j + 1] = data[j]            j -= 1            yield data.copy(), j, j + 1        data[j + 1] = key        yield data.copy(), -1, -1

bubble_sort_step() 替换为 insertion_sort_step() 即可看到插入排序动画。

4. 关键点说明

yield:每次交换后返回当前状态,供动画逐帧绘制FuncAnimation:自动调用 update_plot 更新图形颜色高亮:红色表示正在比较的元素,增强可读性interval:控制动画速度(毫秒)

基本上就这些,不复杂但容易忽略细节。

以上就是python实现排序算法的可视化的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/599399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 19:44:58
下一篇 2025年11月10日 19:46:39

相关推荐

发表回复

登录后才能评论
关注微信