📜  排序算法可视化:快速排序

📅  最后修改于: 2021-04-28 17:47:12             🧑  作者: Mango

从理论上讲,像Quicksort算法这样的算法很难理解。通过可视化此类算法,我们可以轻松理解。在本文中,实现了可视化Quicksort算法的程序。
图形用户界面(GUI)使用pygame库在Python实现。
方法:

  • 生成一个随机值数组,并在窗口中绘制为线条(条)。
  • 由于该算法执行操作非常快,因此已使用pygame.time.delay()来减慢该过程。
  • 为每个操作分配特定的键(开始排序,重置栏)。
  • 使用'pygame.event.get()'方法执行操作,该方法存储用户执行的所有事件。
  • 不同的颜色用于指示条的类型。
    • 绿色–未分类的酒吧
    • 蓝色–枢轴栏
    • 橙色–排序栏

例子:

请确保在系统中安装pygame库。

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

Python
# Python implementation of the 
# Sorting visualiser: Quick Sort
  
# Imports
import pygame
import random
pygame.font.init()
  
# Total window
screen = pygame.display.set_mode(
            (900, 650)
        )
  
# Title and Icon 
pygame.display.set_caption("SORTING VISUALISER")
  
# Uncomment below lines for setting 
# up the icon for the visuliser
# img = pygame.image.load('sort_icon.png')
# pygame.display.set_icon(img)
  
# Boolean variable to run 
# the program in while loop
run = True
  
# Window size and some initials
width = 900
length = 600
array =[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)
  
  
# Function to generate new Array
def generate_arr():
    for i in range(1, 151):
        arr_clr[i]= clr[0]
        array[i]= random.randrange(1, 100)
          
# Intially generate a array
generate_arr() 
  
# Function to refill the 
# updates on the window
def refill():
    screen.fill((255, 255, 255))
    draw()
    pygame.display.update()
    pygame.time.delay(30)
      
# Sorting Algo:Quick sort
def quicksort(array, l, r):
    if l


输出:

https://media.geeksforgeeks.org/wp-content/uploads/20200619155939/visualiser15-2020-06-19_15.49.43.mp4