Bubble Sort Visualizer mit PyGame
In diesem Artikel werden wir sehen , wie wir das visualisieren Blase Art Algorithmus PyGame dh wenn die pygame Anwendung loszulegen können wir die unsortierten Bars mit unterschiedlichen Höhen sehen und wenn wir Leertaste klicken begann es nach jeder Anordnung in Blasensortierung Weise also immer Iterationsmaximalwertelement sollte endlich kommen.
Die Blasensortierung ist ein einfacher Algorithmus, mit dem eine bestimmte Menge von n Elementen sortiert wird, die in Form eines Arrays mit n Elementen bereitgestellt werden. Bubble Sort vergleicht alle Elemente einzeln und sortiert sie nach ihren Werten.
Implementierungsschritte:
1. Erstellen Sie ein Hauptfenster.
2. Füllen Sie das Hauptfenster mit schwarzer Farbe.
3. Erstellen Sie eine Methode, um die Liste der Balken mit einer bestimmten Lücke dazwischen anzuzeigen.
4. Holen Sie sich die Tasteneingabe vom Benutzer.
5. Wenn die Leertaste gedrückt wird, starten Sie die Sortiervorgang
6. Implementieren Sie den Blasensortierungsalgorithmus in der Liste.
7. Füllen Sie nach jeder internen Iteration den Bildschirm mit schwarzer Farbe und rufen Sie die show-Methode auf, um die iterierte Liste in Form eines Balkens anzuzeigen.
Unten ist die Implementierung
import
pygame
pygame.init()
win
=
pygame.display.set_mode((
500
,
400
))
pygame.display.set_caption(
"Bubble sort"
)
x
=
40
y
=
40
width
=
20
height
=
[
200
,
50
,
130
,
90
,
250
,
61
,
110
,
88
,
33
,
80
,
70
,
159
,
180
,
20
]
run
=
True
def
show(height):
for
i
in
range
(
len
(height)):
pygame.draw.rect(win, (
255
,
0
,
0
), (x
+
30
*
i, y, width, height[i]))
while
run:
execute
=
False
pygame.time.delay(
10
)
keys
=
pygame.key.get_pressed()
for
event
in
pygame.event.get():
if
event.
type
=
=
pygame.QUIT:
run
=
False
if
keys[pygame.K_SPACE]:
execute
=
True
if
execute
=
=
False
:
win.fill((
0
,
0
,
0
))
show(height)
pygame.display.update()
else
:
for
i
in
range
(
len
(height)
-
1
):
for
j
in
range
(
len
(height)
-
i
-
1
):
if
height[j] > height[j
+
1
]:
t
=
height[j]
height[j]
=
height[j
+
1
]
height[j
+
1
]
=
t
win.fill((
0
,
0
,
0
))
show(height)
pygame.time.delay(
50
)
pygame.display.update()
pygame.quit()
Ausgabe :