1:效果图
2:代码解释
这段代码实现了一个冒泡排序算法的可视化界面。具体功能如下:
- bubble_sort 函数:实现了冒泡排序算法,每次交换元素后调用 update_display 更新显示,并暂停 0.5 秒以便观察排序过程。
- update_display 函数:更新界面上的文本显示,显示当前数组的状态。
- start_sorting 函数:初始化一个数组并调用 bubble_sort 开始排序。
- main 函数:创建一个 Flet 应用程序,设置页面标题和布局,添加文本和按钮控件,并绑定按钮点击事件。
3:代码
importfletasft
importtime
defbubble_sort(arr, page):
n=len(arr)
foriinrange(n):
swapped=False
forjinrange(0,n-i-1):
ifarr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped=True
update_display(arr, page)
time.sleep(0.5)#暂停一段时间,以便观察排序过程
if notswapped:
break
defupdate_display(arr, page):
text.value =" ".join(map(str, arr))
page.update()
defstart_sorting(e):
arr= [64,34,25,12,22,11,90]
bubble_sort(arr, e.page)
defmain(page:ft.Page):
globaltext
page.title ="冒泡排序可视化"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
text = ft.Text(value="64 34 25 12 22 11 90",size=40)
start_button= ft.ElevatedButton(text="开始排序",on_click=start_sorting)
page.add(
ft.Column(
[
text,
start_button
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER
)
)
if__name__ =="__main__":
ft.app(target=main)