De ce contează?
Când completezi un formular la ghișeu, nu scrii tot ce știi despre tine — scrii exact rubricile cerute: nume, dată, motiv. Iar funcționarul îți mai trece un număr de ordine în colț: nu îți spune nimic despre tine, dar e felul prin care te regăsește în teanc după ce hârtiile sunt amestecate. O structură bună e exact așa: pui în ea fix rubricile care te ajută să decizi, plus, uneori, un număr de ordine ca să nu te pierzi.
Ideea-cheie
Până acum ai definit structuri și le-ai sortat. Dar cine decide CE câmpuri pui înăuntru? Răspunsul nu vine din enunț cuvânt cu cuvânt — vine din întrebare. O structură bună conține exact datele care fac decizia ușoară: ce trebuie să compari, după ce trebuie să sortezi, ce trebuie să afișezi la final.
Două câmpuri în plus apar des și merită învățate ca reflex:
- un câmp derivat, calculat din celelalte (de exemplu
durata = end - start), ca să sortezi sau să compari direct după el, fără să-l recalculezi de fiecare dată; - un index original, adică poziția elementului în datele de intrare, ca să nu pierzi proveniența („al câtelea era") și după ce ai amestecat totul prin sortare.
O structură bună conține exact datele care fac decizia ușoară — și două sunt deseori de adăugat cu mâna ta:
- câmpul derivat (de exemplu
durata = end - start): îl calculezi o dată, la citire, ca să sortezi și să compari direct după el, fără să-l recalculezi mereu; - indexul original (
idx): poziția din input, salvată ÎNAINTE de sortare, ca să nu pierzi proveniența elementului după ce ordinea s-a schimbat.
Regula de aur: structura trebuie să poarte cu ea tot ce vei avea nevoie să afișezi sau să compari DUPĂ ce sortarea a amestecat totul.