用python 写一个选择排序的演示动画
作者:野牛程序员:2023-03-01 19:15:36python阅读 2608
以下是一个用 Python 实现的选择排序演示动画:
import matplotlib.pyplot as plt import time import random def selection_sort(data): for i in range(len(data)): min_index = i for j in range(i+1, len(data)): if data[j] < data[min_index]: min_index = j data[i], data[min_index] = data[min_index], data[i] def show_sorting_process(data): fig, ax = plt.subplots() ax.bar(range(len(data)), data) ax.set_xlim(0, len(data)) ax.set_ylim(0, max(data) + 10) plt.title('Selection Sort') plt.show(block=False) for i in range(len(data)): min_index = i for j in range(i+1, len(data)): # compare color = ['b'] * len(data) color[i] = 'r' color[j] = 'g' ax.clear() ax.bar(range(len(data)), data, color=color) ax.set_xlim(0, len(data)) ax.set_ylim(0, max(data) + 10) plt.title('Selection Sort (Round {})'.format(i+1)) for k in range(len(data)): plt.text(k, data[k] + 1, data[k], horizontalalignment='center', fontweight='bold', color='black') plt.text(i, data[i] + 5, str(data[i]), horizontalalignment='center', fontweight='bold', color='black') plt.text(j, data[j] + 5, str(data[j]), horizontalalignment='center', fontweight='bold', color='white') plt.pause(1) if data[j] < data[min_index]: min_index = j # swap data[i], data[min_index] = data[min_index], data[i] # update the bar chart ax.clear() color = ['b'] * len(data) color[i] = 'r' color[min_index] = 'g' ax.bar(range(len(data)), data, color=color) ax.set_xlim(0, len(data)) ax.set_ylim(0, max(data) + 10) plt.title('Selection Sort (Round {})'.format(i+1)) for k in range(len(data)): plt.text(k, data[k] + 1, data[k], horizontalalignment='center', fontweight='bold', color='black') plt.text(i, data[i] + 5, str(data[i]), horizontalalignment='center', fontweight='bold', color='black') plt.text(min_index, data[min_index] + 5, str(data[min_index]), horizontalalignment='center', fontweight='bold', color='white') plt.pause(1) plt.show() if __name__ == '__main__': # Generate random data data = [random.randint(0, 100) for _ in range(10)] print('Unsorted data:', data) # Show the sorting process show_sorting_process(data) # Sort the data using selection sort selection_sort(data) print('Sorted data:', data)
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:详细讲解C++中的9种控制语句
- 下一篇:python 写的冒泡排序动态演示程序