插入排序的可视化实现(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,一经查实,立即删除!

相关文章

登录的几种方式

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

【行为型模式】状态模式

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

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

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

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;机器学习又是人工智能的一个分支。 那么深度学习到底有…

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机、…

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

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

Linux(rpm,yum安装及管理程序)

目录 1.应用程序与系统命令 2.RPM 2.1rpm软件包管理工具 2.2 rpm命令的形式 2.3查询rpm软件包 ​2.4安装、升级、卸载rpm软件包 2.5维护数据库 3.yum 3.1 配置本地yum源仓库 3.2 yum常用操作命令 3.3 源码编译安装软件 1.应用程序与系统命令 应用程序与系统命令的关系 典…

银河麒麟安装OpenJDK

# 更新软件包列表&#xff08;根据系统的实际情况&#xff0c;可能不需要这一步&#xff09; sudo apt-get update # 安装OpenJDK sudo apt-get install openjdk-8-jdk

圣若热城堡、贝伦塔、热罗尼莫斯修道院 BIBM 2024在里斯本等你

会议之眼 快讯 2024年BIBM&#xff08;IEEE International Conference on Bioinformatics and Biomedicine&#xff09;即IEEE生物信息学与生物医学国际会议将于 2024年 12月3日-6日在葡萄牙里斯本举行&#xff01;这个会议由IEEE&#xff08;电气和电子工程师协会&#xff09…

linux将一个文件移动或复制到另一个目录下(超详细)

问题&#xff1a;需要在linux中将一个文件移动或复制到另一个目录下 下面提到的目录&#xff0c;可以直观理解为window中的文件夹 1、mv命令 mv是"move"的缩写&#xff0c;用于移动文件或目录到另一个位置。 将 文件 a.txt 移动到 目录home下 mv a.txt home将 目录…

Spark 中的分桶分化

Spark 中的分桶分化 Bucketing是 Spark 和 Hive 中用于优化任务性能的一种技术。在分桶桶&#xff08;集群列&#xff09;中确定数据分区并防止数据混洗。根据一个或多个分桶列的值&#xff0c;将数据分配给预定义数量的桶。 分桶有两个主要好处&#xff1a; 改进的查询性能&…

小游戏贪吃蛇的实现之C语言版

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;C语言 目录 游戏前期准备&#xff1a; 设置控制台相关的信息 GetStdHandle GetConsoleCursorInfo SetConsoleCursorInfo SetConsoleCu…

单机三pxc节点集群,+docker-haproxy2.0负载均衡实现

一.下载 https://www.haproxy.org/download/2.0/src/haproxy-2.0.5.tar.gz 或者在这里下载&#xff08;下面需要的各个配置文件都有&#xff09;&#xff1a; https://download.csdn.net/download/cyw8998/89170129 二.编写文件&#xff0c;制作docker镜像 1.Dockerfile&a…

四款一键智能改写工具,为你轻松改出爆款文章

四款一键智能改写工具&#xff0c;为你轻松改出爆款文章&#xff01;当今&#xff0c;虽然内容创作变得非常重要。但是&#xff0c;有时候创作灵感可能枯竭&#xff0c;或者需要对已有内容进行改写以增加独特性。这时候&#xff0c;一键智能改写工具成为了创作中的一种强大的辅…

LeetCode 课程表二(拓扑排序+Python)

使用桶排序算法中的kahn&#xff08;卡恩&#xff09;算法&#xff0c;也可以使用dfs。 这里使用卡恩算法&#xff0c;主要维护一个列表cnt&#xff0c;cnt【i】表示能到达节点i的边&#xff0c;比如说&#xff1a;a到c有一条边&#xff0c;b到c有一条边&#xff0c;那么cnt【…

信息流广告大行其是,微博回望“原生”的初心

摘要&#xff1a;有流量的地方&#xff0c;就当有原生信息流广告 信息流广告&#xff0c;自2006年Facebook推出后就迅速火遍全球数字营销界&#xff0c;被誉为实现了广告主、用户、媒体平台三赢。特别是随着OCPM/OCPX大放异彩&#xff0c;信息流广告几乎成为广告主的必选项&…

Print Conductor 文档批量打印工具 v9.0.2312

网盘下载 Print Conductor 是 Windows 上一款功能强大的文档批量打印工具&#xff0c;通过该软件可以快速的帮用户批量处理打印PDF文件、协议、文档、图纸、演示文稿、文本文件等&#xff0c;完美的支持PDF、DOC、JPG、PNG、SNP、PSD、MSG、WRI、WPS、RTF、TXT、XLS、PPT、PPS、…