Sortarea este procesul prin care elementele unui vector (sir de numere, cuvinte etc.) sunt aranjate intr-o ordine specifica, de obicei crescatoare sau descrescatoare. In aceasta lectie, vom studia doi algoritmi simpli, dar foarte utili pentru intelegerea principiilor de baza ale sortarii: metoda bulelor (Bubble Sort) si sortarea prin selectie (Selection Sort).
Metoda bulelor: Algoritmul 'bulelor' functioneaza prin parcurgerea repetata a vectorului si compararea perechilor de elemente adiacente. Daca ordinea este gresita (de exemplu, intr-o sortare crescatoare, primul element este mai mare decat al doilea), acestea se schimba intre ele. Dupa fiecare parcurgere completa, cel mai mare element 'pluteste' la sfarsitul vectorului, ca o bulica de aer intr-un pahar cu apa.
Algoritmul continua parcurgerile, ignorand ultimele elemente deja sortate, pana cand nu se mai efectueaza nicio interschimbare. Complexitatea sa este O(n^2) in cazul cel mai defavorabil, ceea ce il face ineficient pentru vectori mari, dar este usor de implementat si intelegut.
Sortarea prin selectie: Acest algoritm selecteaza la fiecare pas elementul minim (sau maxim) dintr-o portiune nesortata a vectorului si il plaseaza la inceputul acelei portiuni. Mai exact, se cauta cel mai mic element intre pozitia curenta i si sfarsitul vectorului, apoi se interschimba cu elementul de pe pozitia i. Astfel, dupa fiecare pas, vectorul se imparte in doua zone: o zona sortata la stanga si una nesortata la dreapta.
Complexitatea este tot O(n^2), dar algoritmul face mai putine interschimbari decat metoda bulelor (maxim n-1). Este mai eficient in practica pentru seturi mici de date, dar la fel de simplu de inteles.
Diferenta principala: In bubble sort, interschimbarile sunt frecvente si se fac intre elemente adiacente, in timp ce in selection sort, interschimbarea are loc doar o data pe pas, dupa ce s-a gasit minimul. Ambii algoritmi sunt stabili? Bubble sort poate fi stabil, dar selection sort nu este stabil in varianta clasica (poate schimba ordinea relativa a elementelor egale).
Pentru invatare, ei sunt fundatia pentru algoritmi mai avansati, cum ar fi quicksort sau mergesort.
Vom ilustra ambii algoritmi cu exemple concrete, pas cu pas, pentru a intelege cum se schimba elementele si cum se ajunge la vectorul sortat.
Concepte cheie: Sortare crescatoare/descrescatoare, Interschimbare (swap), Compararea perechilor adiacente (bubble), Selectarea minimului (selection), Vector partial sortat, Complexitatea O(n^2), Stabilitatea unui algoritm de sortare
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.