Stundas uzdevums: Efektīvai meklēšanai dati ir jāsakārto. Uzbūvē "kārtošanas dzinēju" un izpēti klasisko "burbuļkārtošanas" (Bubble Sort) algoritmu un mācīsimies manipulēt ar saraksta elementu pozīcijām, lai izveidotu funkcionējošu rezultātu (Highscores) tabulu.
SR 2.4.19. (Gatavi algoritmi tipveida uzdevumu risēšanai - kārtošana)70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
a, b = b, a.cd Tema7_Algoritmini kartosana.py; code kartosana.pySāksim ar pašu pamatu - iemācīsimies apmainīt saraksta elementus vietām.
kartosana.py izveido sarakstu: rezultati = [90, 45].a, b = b, a), lai samainītu nulto indeksu ar pirmo.
rezultati = [90, 45]
print(f"Pirms maiņas: {rezultati}")
# Apmainām vietām
rezultati[0], rezultati[1] = rezultati[1], rezultati[0]
print(f"Pēc maiņas: {rezultati}")
Uzrakstīsim loģiku, kas iziet cauri visam sarakstam un aizstumj vislielāko skaitli līdz pašām beigām.
dati = [42, 15, 8, 99, 23].for ciklu un range(len(dati) - 1).if nosacījumu: ja elements ir lielāks par savu labo kaimiņu, samaini tos vietām.
dati = [42, 15, 8, 99, 23]
print(f"Sākotnējie dati: {dati}")
# Viens pilns gājiens cauri sarakstam
for i in range(len(dati) - 1):
if dati[i] > dati[i + 1]:
dati[i], dati[i + 1] = dati[i + 1], dati[i]
print(f"Pēc viena gājiena: {dati}")
Pievienosim ārējo ciklu, lai atkārtotu kārtošanu pilnībā.
bubble_sort(saraksts).for j in range(len(saraksts)):.print komandu pēc iekšējā cikla, lai vizualizētu katru gājienu.
def bubble_sort(saraksts):
elementu_skaits = len(saraksts)
for j in range(elementu_skaits):
for i in range(elementu_skaits - 1):
if saraksts[i] > saraksts[i + 1]:
saraksts[i], saraksts[i + 1] = saraksts[i + 1], saraksts[i]
print(f"Gājiens {j+1}: {saraksts}")
return saraksts
speletaju_punkti = [64, 34, 25, 12, 22, 11, 90]
print("--- KĀRTOŠANAS PROCESS ---")
sakartots = bubble_sort(speletaju_punkti)