Advertisement
EXTREMEXPLOIT

Insertion Sort Visualization

Jul 17th, 2019
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.38 KB | None | 0 0
  1. import turtle
  2. import time
  3.  
  4. Array = [7, 9, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2]
  5. x = -590
  6. y = -390
  7. Scr = turtle.Screen()
  8. Pointer = turtle.Turtle()
  9. Scr.setup(1200, 800)
  10. Pointer.hideturtle()
  11. Pointer.speed(-1)
  12. Pointer.penup()
  13. Pointer.goto(x, y)
  14. Pointer.pensize(2)
  15. Pointer.pendown()
  16. Pointer.color("white")
  17.  
  18.  
  19. def InsertionSort(Array):
  20.     IterationCounter = 0
  21.     for arrayPosition in range(1, len(Array)):
  22.         actualElement = Array[arrayPosition]
  23.  
  24.         while arrayPosition > 0 and Array[arrayPosition - 1] > actualElement:
  25.             Array[arrayPosition] = Array[arrayPosition - 1]
  26.             arrayPosition -= 1
  27.             Array[arrayPosition] = actualElement
  28.  
  29.             GenerateArray(Array, arrayPosition)
  30.             time.sleep(1)
  31.             IterationCounter += 1
  32.             ResetScreen()
  33.  
  34.     GenerateArray(Array, None)
  35.     PrintInteration(IterationCounter)
  36.     return Array
  37.  
  38. def Rectangle(xSize, ySize, FillColor):
  39.     Pointer.pendown()
  40.     Pointer.fillcolor(FillColor)
  41.     Pointer.begin_fill()
  42.     Pointer.forward(xSize)
  43.     Pointer.left(90)
  44.     Pointer.forward(ySize)
  45.     Pointer.left(90)
  46.     Pointer.forward(xSize)
  47.     Pointer.left(90)
  48.     Pointer.forward(ySize)
  49.     Pointer.end_fill()
  50.     Pointer.pendown()
  51.     Pointer.left(90)
  52.  
  53. def GenerateElement(n, l, m, FillColor):
  54.     xSize = (1/l)*1000
  55.     ySize = (n/m) * 500
  56.     Rectangle(xSize, ySize, FillColor)
  57.  
  58. def GenerateArray(Array, Position):
  59.     m = max(Array)
  60.     l = len(Array)
  61.  
  62.     for i in range(len(Array)):
  63.         n = Array[i]
  64.         if Position is None:
  65.             Colour = "darkseagreen"
  66.         else:
  67.             if i == Position:
  68.                 Colour = "darksalmon"
  69.             else:
  70.                 Colour = "grey"
  71.         GenerateElement(n, l, m, Colour)
  72.         Pointer.penup()
  73.         Pointer.forward((1/l)*1050)
  74.         Pointer.pendown()
  75.  
  76. def ResetScreen():
  77.     x = -590
  78.     y = -390
  79.     turtle.clearscreen()
  80.     Pointer.hideturtle()
  81.     Pointer.speed(-1)
  82.     Pointer.penup()
  83.     Pointer.goto(x, y)
  84.     Pointer.pensize(2)
  85.     Pointer.pendown()
  86.  
  87. def PrintInteration(n):
  88.     Pointer.color("black")
  89.     Pointer.penup()
  90.     TextString = str("Iterations: ") + str(n)
  91.     Pointer.goto(-590, 310)
  92.     Pointer.pendown()
  93.     Pointer.write(TextString, font=("Highest Dafont", 50))
  94.  
  95. try:
  96.     InsertionSort(Array)
  97.     turtle.mainloop()
  98. except:
  99.     print("Window Closed!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement