冒泡排序要求可动态输入无须数组,需打印每一趟的排序结果,需要有数据和UI的联动数据同步
时间: 2023-12-03 13:44:44 浏览: 410
数据结构 冒泡排序 输出每一趟结果
4星 · 用户满意度95%
好的,您可以尝试以下代码实现冒泡排序并实现数据和UI的联动数据同步:
```python
import tkinter as tk
class BubbleSort:
def __init__(self):
self.data = []
self.sorted_data = []
def sort(self):
n = len(self.data)
self.sorted_data = self.data.copy()
for i in range(n):
for j in range(0, n-i-1):
if self.sorted_data[j] > self.sorted_data[j+1]:
self.sorted_data[j], self.sorted_data[j+1] = self.sorted_data[j+1], self.sorted_data[j]
self.display_sorted_data(self.sorted_data)
def display_sorted_data(self, data):
self.listbox.delete(0, tk.END)
for val in data:
self.listbox.insert(tk.END, val)
self.listbox.update()
def add_data(self, data):
self.data.append(data)
self.listbox.insert(tk.END, data)
def clear(self):
self.data = []
self.sorted_data = []
self.listbox.delete(0, tk.END)
def create_window(self):
window = tk.Tk()
window.title("Bubble Sort")
window.geometry("300x400")
self.listbox = tk.Listbox(window)
self.listbox.pack(fill=tk.BOTH, expand=1)
add_button = tk.Button(window, text="Add", command=self.on_add)
add_button.pack(side=tk.LEFT)
sort_button = tk.Button(window, text="Sort", command=self.sort)
sort_button.pack(side=tk.LEFT)
clear_button = tk.Button(window, text="Clear", command=self.clear)
clear_button.pack(side=tk.LEFT)
return window
def on_add(self):
try:
data = int(self.entry.get())
self.add_data(data)
self.entry.delete(0, tk.END)
except ValueError:
pass
def run(self):
window = self.create_window()
self.entry = tk.Entry(window)
self.entry.pack(fill=tk.X)
window.mainloop()
if __name__ == '__main__':
bubble_sort = BubbleSort()
bubble_sort.run()
```
该代码实现了一个简单的GUI界面,其中有三个按钮,分别是“Add”、“Sort”和“Clear”,用于添加数据、进行排序和清空数据。在添加数据时,程序会将数据添加到列表中,并将列表展示在GUI的Listbox控件中;在进行排序时,程序会将排序过程中每一趟的结果展示在GUI的Listbox控件中;在清空数据时,程序会将Listbox控件中的数据清空,并将数据列表清空。
您可以将该代码保存为.py文件并运行,即可查看结果。
阅读全文