用python生成快速排序动画
用Python的matplotlib库来创建动画,实现快速排序并将其过程动态可视化。import matplotlib.pyplot as plt
import matplotlib.animation as animation
from random import shuffle
def quicksort(arr, start, end, frames):
if start >= end:
return
pivot_index = partition(arr, start, end)
frames.append(arr[:])
quicksort(arr, start, pivot_index-1, frames)
quicksort(arr, pivot_index+1, end, frames)
def partition(arr, start, end):
pivot_index = start
pivot = arr
for i in range(start, end):
if arr < pivot:
arr, arr = arr, arr
pivot_index += 1
arr, arr = arr, arr
return pivot_index
def animate(frames):
fig, ax = plt.subplots()
ax.set_title("Quick Sort")
bar_rects = ax.bar(range(len(frames)), frames, align="edge")
def update_fig(frame, rects, iteration):
for rect, val in zip(rects, frame):
rect.set_height(val)
iteration += 1
return rects
anim = animation.FuncAnimation(fig, func=update_fig,
fargs=(bar_rects, ),
frames=frames, interval=50,
repeat=False)
plt.show()
# 创建随机数据
data =
shuffle(data)
# 排序过程中的所有状态
frames = []
quicksort(data, 0, len(data)-1, frames)
# 生成动画
animate(frames)
快速排序的逻辑被封装在quicksort函数中,animate函数用于创建和显示排序过程的动画。可以通过修改data列表来改变输入数据,或者调整interval参数来改变动画的速度。 字体全是白色的,要选中才能看见,楼主改一下? 我来试试,能不能跑{:1_918:} 感谢分享 跑了一下,完美 大佬就是厉害 已复制,我试试去 试一下看看 作者好厉害6了
谢谢分享了!
页:
[1]
2