Sortowanie na planszy
Sortowanie bąbelkowe - Informatyka - technikum klasa 1 (Python)
Animacja pokazuje sortowanie bąbelkowe krok po kroku. Każda liczba to słupek (8 jednostek wysokości na jednostkę wartości). W każdym kroku: - porównywana para jest **pomarańczowa**, gdy zostaje bez zmian, - **czerwona**, gdy elementy zostały zamienione, - elementy już na swoich miejscach (koniec listy) są **zielone**. Funkcja `draw(values, colors)` czyści planszę (`world.clear_trails()`) i rysuje wszystkie słupki od nowa.
arrow = Sprite()
arrow.image = 16
arrow.size = 10
world.add(arrow)
arrow.visible = False
def draw(values, colors=None):
world.clear_trails()
for i, v in enumerate(values):
if colors:
arrow.pen.color = colors[i]
else:
arrow.pen.color = (99, 102, 241)
arrow.pen.on = False
arrow.position = (-90 + 14 * i, -80)
arrow.angle = 0
arrow.pen.on = True
for side in [8 * v, 10, 8 * v, 10]:
arrow.move(side)
arrow.turn(90)
arrow.pen.on = False
values = [7, 3, 9, 1, 5, 8, 2]
class BubbleSort(Sprite):
def __init__(self):
self.visible = False
self.i = 0
self.j = 0
self.wait = 0
def update(self):
self.wait += 1
if self.wait < 15:
return
self.wait = 0
n = len(values)
if self.i >= n - 1:
draw(values, [(22, 163, 74)] * n)
world.stop()
return
colors = [(99, 102, 241)] * n
for k in range(n - self.i, n):
colors[k] = (22, 163, 74)
j = self.j
if values[j] > values[j + 1]:
values[j], values[j + 1] = values[j + 1], values[j]
colors[j] = colors[j + 1] = (220, 38, 38)
else:
colors[j] = colors[j + 1] = (234, 88, 12)
draw(values, colors)
self.j += 1
if self.j >= n - 1 - self.i:
self.i += 1
self.j = 0
draw(values)
world.add(BubbleSort())
world.start()Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Informatyka - technikum klasa 1·Zaloguj się, aby zapisać postęp na koncie.