Bubble sort visualizer using PyGame (original) (raw)

Last Updated : 10 Sep, 2025

In this article we will see how we can visualize the bubble sort algorithm using PyGame i.e when the pygame application get started we can see the unsorted bars with different heights and when we click space bar key it started getting arranging in bubble sort manner i.e after every iteration maximum value element should come at last. **Bubble Sort is a simple algorithm which is used to sort a given set of n elements provided in form of an array with n number of elements. Bubble Sort compares all the element one by one and sort them based on their values.

Implementation steps:

Below is the implementation:

Python `

importing pygame

import pygame

pygame.init()

setting window size

win = pygame.display.set_mode((500, 400))

setting title to the window

pygame.display.set_caption("Bubble sort")

initial position

x = 40 y = 40

width of each bar

width = 20

height of each bar (data to be sorted)

height = [200, 50, 130, 90, 250, 61, 110, 88, 33, 80, 70, 159, 180, 20]

run = True

method to show the list of height

def show(height):

# loop to iterate each item of list
for i in range(len(height)):

    # drawing each bar with respective gap
    pygame.draw.rect(win, (255, 0, 0), (x + 30 * i, y, width, height[i]))

infinite loop

while run:

# execute flag to start sorting
execute = False

# time delay
pygame.time.delay(10)

# getting keys pressed
keys = pygame.key.get_pressed()

# iterating events
for event in pygame.event.get():

    # if event is to quit
    if event.type == pygame.QUIT:

        # making run = false so break the while loop
        run = False

# if space bar is pressed
if keys[pygame.K_SPACE]:
    # make execute flag to true
    execute = True

# checking if execute flag is false
if execute == False:

    # fill the window with black color
    win.fill((0, 0, 0))

    # call the height method to show the list items
    show(height)

    # update the window
    pygame.display.update()

# if execute flag is true
else:

    # start sorting using bubble sort technique
    for i in range(len(height) - 1):

        # after this iteration max element will come at last
        for j in range(len(height) - i - 1):

            # starting is greater than next element
            if height[j] > height[j + 1]:

                # save it in temporary variable
                # and swap them using temporary variable
                t = height[j]
                height[j] = height[j + 1]
                height[j + 1] = t

            # fill the window with black color
            win.fill((0, 0, 0))

            # call show method to display the list items
            show(height)

            # create a time delay
            pygame.time.delay(50)

            # update the display
            pygame.display.update()

exiting the main window

pygame.quit()

`

**Output :