Sorting algorithm visualization : Insertion Sort (original) (raw)
`# Python implementation of the
Sorting visualiser: Insertion Sort
Imports
import pygame import random import time pygame.font.init() startTime = time.time()
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('sorticon.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)
Initially 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(10)
Sorting Algorithm: Insertion sort
def insertionSort(array):
for i in range(1, len(array)):
pygame.event.pump()
refill()
key = array[i]
arr_clr[i]= clr[2]
j = i-1
while j>= 0 and key<array[j]:
arr_clr[j]= clr[2]
array[j + 1]= array[j]
refill()
arr_clr[j]= clr[3]
j = j-1
array[j + 1]= key
refill()
arr_clr[i]= clr[0]Function to Draw the array values
def draw():
# Text should be rendered
txt = fnt.render("SORT: PRESS 'ENTER'",
1, (0, 0, 0))
# Position where text is placed
screen.blit(txt, (20, 20))
txt1 = fnt.render("NEW ARRAY: PRESS 'R'",
1, (0, 0, 0))
screen.blit(txt1, (20, 40))
txt2 = fnt1.render("ALGORITHM USED:"
"INSERTION SORT", 1, (0, 0, 0))
screen.blit(txt2, (600, 60))
text3 = fnt1.render("Running Time(sec): "+
str(int(time.time() - startTime)),
1, (0, 0, 0))
screen.blit(text3, (600, 20))
element_width =(width-150)//150
boundry_arr = 900 / 150
boundry_grp = 550 / 100
pygame.draw.line(screen, (0, 0, 0), (0, 95),
(900, 95), 6)
# Drawing the array values as lines
for i in range(1, 151):
pygame.draw.line(screen, arr_clr[i], \
(boundry_arr * i-3, 100), \
(boundry_arr * i-3, \
array[i]*boundry_grp + 100), element_width)Program should be run
continuously to keep the window open
while run: # background screen.fill((255, 255, 255))
# Event handler stores all event
for event in pygame.event.get():
# If we click Close button in window
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r:
generate_arr()
if event.key == pygame.K_RETURN:
insertionSort(array)
draw()
pygame.display.update()pygame.quit()
`