插入排序的可视化实现(Python)

插入排序的Python代码

import tkinter as tk
import random
import timeclass InsertionSortVisualizer:def __init__(self, root, canvas_width=800, canvas_height=400, num_bars=10):self.root = rootself.canvas_width = canvas_widthself.canvas_height = canvas_heightself.num_bars = num_barsself.bar_width = canvas_width // num_barsself.data = [random.randint(1, canvas_height) for _ in range(num_bars)]self.canvas = tk.Canvas(root, width=canvas_width, height=canvas_height)self.canvas.pack()self.draw_data()def draw_data(self, colored_index=None):self.canvas.delete("all")for i, value in enumerate(self.data):# 根据状态选择颜色,这里使用简单逻辑,可根据需要调整if colored_index is not None and i in colored_index:color = "red"else:color = "blue"self.canvas.create_rectangle(i * self.bar_width, self.canvas_height - value,(i + 1) * self.bar_width, self.canvas_height,fill=color)self.root.update_idletasks()def insertion_sort(self):for i in range(1, len(self.data)):key = self.data[i]# 刷新显示,将当前处理的元素标为红色self.draw_data([i])j = i - 1while j >= 0 and key < self.data[j]:self.data[j + 1] = self.data[j]j -= 1self.data[j + 1] = key# 刷新显示,标记正在比较的元素self.draw_data([j + 1])time.sleep(0.5)  # 延时,以便观察过程self.draw_data()  # 最后一步,用统一颜色画出排序后的数据def main():root = tk.Tk()root.title("插入排序")app = InsertionSortVisualizer(root)# 开始排序按钮tk.Button(root, text="开始", command=app.insertion_sort).pack()root.mainloop()if __name__ == "__main__":main()

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机 VS 嵌入式LInux

linux 嵌入式开发岗位需要掌握Linux的主要原因之一是&#xff0c;许多嵌入式系统正在向更复杂、更功能丰富的方向发展&#xff0c;需要更强大的操作系统支持。而Linux作为开源、稳定且灵活的操作系统&#xff0c;已经成为许多嵌入式系统的首选。以下是为什么嵌入式开发岗位通常…

国家市场监督管理总局令第90号

非法定计量单位限制使用管理办法 2024年3月18日国家市场监督管理总局令第90号公布 自2024年6月1日起施行 第一条 为了保证国家计量单位制的统一&#xff0c;加强非法定计量单位的使用管理&#xff0c;根据《中华人民共和国计量法》等有关法律、行政法规&#xff0c;制定本办…

什么是掩码补丁位置?

掩码补丁位置&#xff08;Masked Patch Position&#xff09;是一个在视觉任务处理中使用的概念&#xff0c;特别是在处理图像分割等任务时。 在深度学习和计算机视觉领域&#xff0c;掩码&#xff08;Mask&#xff09;常用于指示模型关注或忽略输入数据的特定部分。在基于补丁…

登录的几种方式

一、session 1、客户端发送请求&#xff0c;服务器将登录信息存储在 Session 中&#xff0c;Session 依赖于 Cookie&#xff08;cookie指的就是在浏览器里面存储的一种数据&#xff0c;仅仅是浏览器实现的一种数据存储功能。Cookie实际上是一小段的文本信息。&#xff09;&…

【行为型模式】状态模式

一、状态模式概述 状态模式的定义&#xff1a;允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。(对象行为型) 策略模式和状态模式是双胞胎&#xff0c;在出生时才分开。 策略模式是围绕可以互换的算法来创建成功业务的。状态模式走的是更崇高的路&#xff0…

全民拼购:社交电商与拼购玩法的完美结合

大家好&#xff0c;我是微三云周丽&#xff0c;今天给大家分析当下市场比较火爆的商业模式&#xff01; 小编今天跟大伙们分享什么是社交电商与拼购玩法的wan美结合&#xff1f; 随着社交电商和拼购玩法的兴起&#xff0c;全民拼购模式正逐渐成为电商行业的新宠。结合了人性化…

CSS中的display: flex;

display: flex; 是CSS&#xff08;层叠样式表&#xff09;中用于设置容器为弹性盒子模型&#xff08;Flexbox&#xff09;的属性值。弹性盒子模型是CSS3中引入的一个新的布局模式&#xff0c;它设计用来更好地在容器中布局、对齐和分配空间给子元素&#xff08;即容器内的项目&…

Github账号注册

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

深度学习与神经网络入门

前言 人工智能&#xff08;AI&#xff09;与机器学习&#xff08;ML&#xff09;与深度学习&#xff08;DL&#xff09;的关系&#xff1a; DL包含于ML&#xff0c;ML包含于AI。 即深度学习是机器学习一部分&#xff0c;机器学习又是人工智能的一个分支。 那么深度学习到底有…

运气变好的几个小妙招

首先不要总是说一些丧气话&#xff0c;因为老天爷是听不到主语的&#xff0c;即使你当时说的是”谁谁谁好烦人啊“类似的句式&#xff0c;但传到上帝耳朵的时候会失去主语&#xff0c;也就会潜移默化的带到自己身上。 那我们应该怎么做呐&#xff1f; 1. 避免消极语言 首先&…

本文为解决:前端json传String格式时间参数,后端无法解析。

有的人说单独写一个localDateTime配置类&#xff0c;看了一下可以不用。 直接写WebMvcConfig里面就行 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToS…

CSS flex弹性布局属性

容器属性 flex-direction 设置主轴方向,默认水平方向 row 默认值&#xff0c;主轴为水平方向&#xff08;从左向右排水平布局&#xff09; row-reverse 主轴为水平方向&#xff08;从右向左排水平布局&#xff09; column 主轴为垂直方向&#xff08;从上到下垂直布局&#x…

学习笔记——微信小程序var与let、bindtap与bindinput、全局变量与局部变量的区别

1、var与let的区别 var申明的为全局变量&#xff0c;作用域为所在的函数内&#xff0c;其他函数调用会出现变量未定义的报错 let声明的为局部变量&#xff0c;只会作用于最近的{}中&#xff0c;其他区域无法调用 2、全局变量与局部变量 全局变量是在整个小程序运行周期内都…

openGauss学习笔记-268 openGauss性能调优-TPCC性能调优测试指导-网络配置-网卡多中断队列设置

文章目录 openGauss学习笔记-268 openGauss性能调优-TPCC性能调优测试指导-网络配置-网卡多中断队列设置268.1 中断调优268.2 网卡固件确认与更新 openGauss学习笔记-268 openGauss性能调优-TPCC性能调优测试指导-网络配置-网卡多中断队列设置 本章节主要介绍openGauss数据库内…

B203-若依框架应用

目录 简介版本RuoYi-fast项目准备新增模块/代码生成 简介 基于SpringBoot的权限管理系统&#xff0c;基于SpringBoot开发的轻量级Java快速开发框架 版本 前后端未分离单应用版本&#xff1a;RuoYi-fast&#xff0c;前后端未分离多模块版本&#xff1a;RuoYi 前后端分离单应用…

转行做银行测试,需要了解哪些?

在这个内卷严重的时代&#xff0c;银行的业务不断增加&#xff0c;随着软件信息化的要求越来越高&#xff0c;银行对软件测试人员也提出了非常高的要求。 银行的软件测试是针对银行的软件系统&#xff08;如柜面系统、信贷系统&#xff09;和银行专用设备&#xff08;如ATM机、…

浅谈薪酬绩效设计及运行的忌讳

薪酬绩效设计及运行是企业管理中的重要环节&#xff0c;直接关系到员工的工作积极性和企业的整体效益。然而&#xff0c;在实际操作中&#xff0c;许多企业往往因为对薪酬绩效设计的不当理解或操作不当&#xff0c;导致了一系列问题的出现。本文将从薪酬绩效设计及运行的忌讳入…

一键还原精灵 V12.1.405.701 装机版

网盘下载 个人版&#xff1a;不划分分区不修改分区表及MBR&#xff0c;安装非常安全&#xff0c;备份文件自动隐藏&#xff0c;不适用于WIN98系统。 装机版&#xff1a;需用PQMAGIC划分分区作隐藏的备份分区&#xff0c;安装过程中有一定的风险&#xff0c;安装后就非常安全。…

基于Spring Cloud Alibaba的微服务业务拆分设计

胡弦&#xff0c;视频号2023年度优秀创作者&#xff0c;互联网大厂P8技术专家&#xff0c;Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者&#xff0c;资深架构师&#xff0c;技术负责人&#xff0c;极客时间训练营讲师&#xff0c;四…

2024年4月22号PMP每日三题含答案

2024年4月22号PMP每日三题含答案 1.项目经理正在执行一个涉及不同业务部门的全公司项目。在一次规划会议上&#xff0c;项目经理注意到每个部门的具体需求不能引起其他部门的兴趣&#xff0c;这影响到会议的质量。 若要解决这个问题&#xff0c;项目经理应该怎么做&#xff1f…