Įrašas — ir kodėl du laukai turi rėžius
Pradedam nuo įrašo tipo. Jis atrodo nuobodžiai — keturi laukai — bet du iš jų turi rėžius, ir tie rėžiai yra sprendimas, o ne atsitiktinumas.
Susikurk projektą:
mkdir algo && cd algo
go mod init algo
go mod init sukuria go.mod. Jo neredaguosi ranka — Go tvarko jį pats.
Tada item.go (žr. dešinėje).
Kodėl Year ir Rating turi rėžius
Title ir Artist yra eilutės — jos gali būti bet kokios. Year ir Rating
negali: metai yra tarp 1900 ir 2030, įvertinimas — tarp 0 ir 100.
Tai atrodo kaip smulkmena. Nėra.
Rikiavimas, kurį parašysi 7 ir 8 pamokose, lygina elementus tarpusavyje. Toks rikiavimas veikia su bet kuo, ką gali palyginti — ir greičiausias įmanomas jo variantas yra O(n log n).
9 pamokos rikiavimas nelygina nieko. Jis veikia greičiau — O(n) — bet tik tada, kai iš anksto žinai reikšmių rėžius, nes jam reikia po vieną „kibirą" kiekvienai galimai reikšmei. 131 metai ir 101 įvertinimas — tiek kibirų paruošti lengva. Pavadinimams — neįmanoma.
Todėl šie du laukai turi rėžius jau dabar, aštuoniomis pamokomis anksčiau, negu jų prireiks. Tai vienintelis sprendimas šioje pamokoje, kurio vėliau nebus galima pakeisti neperrašius duomenų.
ID yra atskiras nuo pozicijos masyve. Kai 7 pamokoje surikiuosi biblioteką,
įrašai pasikeis vietomis — bet ID liks prilipęs prie savo įrašo. Niekada
nenaudok indekso kaip identifikatoriaus.