Video: Vinay Venkatraman: Technology crafts for the digitally underserved 2025
Imaginați-vă că încercați să găsiți un element într-o listă fără să îl sortați mai întâi. Fiecare căutare devine o căutare secvențială consumatoare de timp. Dar, un caz poate fi făcut pentru a nu sorta date pentru algoritmi. La urma urmei, datele sunt încă accesibile, chiar dacă nu le sortați - iar sortarea durează timp.
Desigur, problema cu datele nesortate este aceeași problemă cu sertarul de junk în bucătărie (sau oriunde ai sertarul tău de gunoi - presupunând că îl poți găsi). Căutarea a ceva în sertarul junk consumă mult timp, pentru că nici măcar nu puteți începe să ghiciți unde să găsiți ceva. Mai degrabă decât să ajungeți și să luați ceea ce doriți, trebuie să eliminați nenumărate alte elemente pe care nu le doriți în efortul de a găsi singurul element de care aveți nevoie. Din păcate, elementul de care aveți nevoie ar putea să nu fie în sertarul de junk în primul rând - s-ar putea să îl aruncați sau să-l puneți într-un alt sertar.
Sertarul de junk în casa ta este la fel ca datele nesortate ale sistemului. Când datele sunt nesortate, trebuie să căutați un element la un moment dat și nici măcar nu știți dacă veți găsi ceea ce aveți nevoie fără a căuta mai întâi fiecare element din setul de date. Este o modalitate frustranta de a lucra cu date.
Bineînțeles, simpla sortare a datelor nu este suficientă. Dacă aveți o bază de date a angajatului sortată după numele de familie, totuși trebuie să căutați un angajat până la data nașterii, sortarea nu este utilă. (Spuneți că doriți să găsiți toți angajații care au o zi de naștere într-o anumită zi.) Pentru a găsi data de naștere de care aveți nevoie, trebuie să căutați întregul set de date pe rând. În consecință, sortarea trebuie să se concentreze asupra unei nevoi particulare. Da, ați avut nevoie de baza de date a angajatului sortată după departament la un moment dat și după numele de familie la un alt moment, dar acum aveți nevoie de o listă ordonată după data nașterii pentru a utiliza setul de date eficient.
Necesitatea de a menține mai multe comenzi sortate pentru aceleași date este motivul pentru care dezvoltatorii au creat indici. Sortarea unui index mic este mai rapid decât sortarea întregului set de date. Indicele menține o comandă de date specifică și indică întregul set de date, astfel încât să puteți găsi ceea ce aveți nevoie extrem de rapid. Prin menținerea unui indice pentru fiecare cerință de sortare, puteți reduce în mod efectiv timpul de acces la date și permiteți mai multor persoane să acceseze datele în același timp, în ordinea în care au nevoie să le acceseze.
Există multe modalități de clasificare a algoritmilor de sortare. Una dintre aceste căi este viteza de genul acesta. Când se analizează cât de eficient este un algoritm special de sortare pentru aranjarea datelor, valorile de referință ale timpului se văd de obicei la doi factori:
- Comparații: Pentru a muta datele dintr-o locație într-un set de date într-altul, trebuie să știți unde să îl mutați, ceea ce înseamnă compararea datelor țintă cu alte date din setul de date.Având mai puține comparații înseamnă performanță mai bună.
- Schimburi: În funcție de modul în care scrieți un algoritm, este posibil ca datele să nu ajungă la locația finală din setul de date la prima încercare. De fapt, datele s-ar putea muta de mai multe ori. Numărul de schimburi afectează viteza considerabil, deoarece acum vă mutați date dintr-o locație în alta în memorie. Schimburile mai mici și mai mici (cum ar fi atunci când se utilizează indicii) înseamnă o performanță mai bună.
