写一个上面代码的演示程序
时间: 2023-12-01 10:24:11 浏览: 94
好的,我可以帮您写一个演示程序,用于展示上面的代码。这个程序可以实现对一个数列进行排序,您可以输入一个数列,然后程序会按照您选择的排序算法对其进行排序。
这个程序的界面比较简单,只包含一个输入框和一个下拉列表。您可以在输入框中输入一个数列,例如:[5, 3, 8, 2, 1],然后在下拉列表中选择一个排序算法,例如:选择“冒泡排序”。
然后,您可以点击“排序”按钮,程序会按照您选择的排序算法对输入的数列进行排序,并在界面上显示排序后的结果,例如:[1, 2, 3, 5, 8]。
下面是这个程序的 Python 代码:
```python
import tkinter as tk
import ast
def bubble_sort(nums):
n = len(nums)
for i in range(n):
for j in range(n-i-1):
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return nums
def quick_sort(nums):
if len(nums) <= 1:
return nums
pivot = nums[0]
left = [x for x in nums[1:] if x < pivot]
right = [x for x in nums[1:] if x >= pivot]
return quick_sort(left) + [pivot] + quick_sort(right)
def selection_sort(nums):
n = len(nums)
for i in range(n):
min_index = i
for j in range(i+1, n):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
def sort_nums():
nums_str = nums_entry.get()
try:
nums = ast.literal_eval(nums_str)
except:
result_label.configure(text="Invalid input!")
return
if not isinstance(nums, list):
result_label.configure(text="Invalid input!")
return
sort_method = sort_method_var.get()
if sort_method == "Bubble Sort":
sorted_nums = bubble_sort(nums)
elif sort_method == "Quick Sort":
sorted_nums = quick_sort(nums)
elif sort_method == "Selection Sort":
sorted_nums = selection_sort(nums)
result_label.configure(text=str(sorted_nums))
root = tk.Tk()
root.title("Sorting Demo")
nums_label = tk.Label(root, text="Input Numbers:")
nums_label.pack()
nums_entry = tk.Entry(root)
nums_entry.pack()
sort_method_label = tk.Label(root, text="Sort Method:")
sort_method_label.pack()
sort_methods = ["Bubble Sort", "Quick Sort", "Selection Sort"]
sort_method_var = tk.StringVar()
sort_method_var.set(sort_methods[0])
sort_method_option = tk.OptionMenu(root, sort_method_var, *sort_methods)
sort_method_option.pack()
sort_button = tk.Button(root, text="Sort", command=sort_nums)
sort_button.pack()
result_label = tk.Label(root, text="")
result_label.pack()
root.mainloop()
```
您可以将这段代码保存为一个名为 `sorting_demo.py` 的文件,然后在命令行中运行它,即可启动演示程序。
阅读全文