当前位置:科技动态 > 排序算法可视化:插入排序

排序算法可视化:插入排序

  • 发布:2023-10-02 22:11

像插入排序这样的算法可以通过可视化轻松理解。在本文中,实现了一个用于可视化插入排序算法的程序。
图形用户界面(GUI)是使用 pygame 库在 Python 中实现的。
方法:

  • 生成一个随机数组并用条形填充 pygame 窗口。垂直条是表示数组元素的垂直线。
  • 将所有条形设置为绿色(未排序)。
  • 使用 pygame.time.delay() 减慢算法速度,以便我们可以看到排序过程。
  • 实现一个计时器来查看算法的执行情况。
  • 使用“pygame.event.get()”方法执行操作,该方法存储用户执行的所有事件,例如启动、重置。
  • 蓝色用于突出显示在特定时间排序的条形。
  • 橙色突出显示排序条。

观察:
从插入排序可视化中,我们可以清楚地看到,与合并排序或快速排序等其他排序算法相比,插入排序非常慢。
示例:

在运行以下程序之前请务必安装pygame库。

以下是上述可视化工具的实现:

Python
# Python 实现# 排序可视化工具:插入排序

# 进口
导入pygame
随机导入
导入时间
pygame.font.init()
开始时间 = time.time()
# 总窗口
屏幕 = pygame.display.set_mode(
(900, 650)
)

# 标题和图标
pygame.display.set_caption(
“排序可视化器”
)

# 取消注释下面的设置行
# 增加可视化器的图标
# img = pygame.image.load('sorticon.png')
# pygame.display.set_icon(img)

# 要运行的布尔变量
# while循环中的程序
运行=真

# 窗口大小和一些缩写
宽度=900
长度 = 600
数组=[0]*151
arr_clr =[(0, 204, 102)]*151
clr_ind = 0
clr =[(0, 204, 102), (255, 0, 0), \
(0, 0, 153), (255, 102, 0)]
fnt = pygame.font.SysFont("comicsans", 30)
fnt1 = pygame.font.SysFont("comicsans", 20)

# 生成新数组的函数
defgenerate_arr():
对于范围 (1, 151) 内的 i:arr_clr[i]= clr[0]
数组[i]= random.randrange(1, 100)

# 最初生成一个数组
生成_arr()

# 填充函数
# 窗口上的更新
def 填充():
屏幕.填充((255, 255, 255))
画()
pygame.display.update()
pygame.time.delay(10)

# 排序算法:插入排序
def 插入排序(数组):

对于范围内的 i(1,len(数组)):
pygame.event.pump()
重新填充()
键=数组[i]
arr_clr[i]= clr[2]
j = i-1
当 j>= 0 且 key


输出:

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。

相关文章

热门推荐