Sortare cu bule

Algoritmul pentru sortarea cu bule necesită o pereche de bucle imbricate. Bucla exterioară trebuie să itereze o dată pentru fiecare element din setul de date (de dimensiunea n), în timp ce bucla interioară iterează de n ori de prima dată când este introdusă, de n-1 ori a doua și așa mai departe. Luați în considerare scopul fiecărei bucle. Așa cum s-a explicat mai sus, sortarea cu bule este structurată astfel încât la fiecare trecere prin listă următorul element cel mai mare al datelor să fie mutat la locul potrivit. Prin urmare, pentru a obține toate n elementele în locurile lor corecte, bucla exterioară trebuie executată de n ori.

Bucla interioară este executată la fiecare iterație a buclei externe. Scopul este de a pune următorul element cel mai mare care este pus în funcțiune. Prin urmare, bucla interioară face compararea și schimbarea elementelor adiacente. Pentru a determina complexitatea acestei bucle, calculăm numărul de comparații care trebuie făcute. La prima iterație a buclei externe, în timp ce încercați să plasați cel mai mare element, trebuie să existe n – 1 comparații: prima comparație se face între primul și al doilea element, al doilea se face între al doilea și al treilea element și așa mai departe până când se face comparația n-1 între elementul n-1 și al n-lea. La a doua iterație a buclei externe, nu este necesar să comparați cu ultimul element al listei, deoarece a fost plasat în locul corect pe trecerea anterioară. Prin urmare, a doua iterație necesită doar comparații n-2. Acest model continuă până la a doua-la-ultima iterație a buclei externe, atunci când numai primele două elemente ale listei sunt nesortate; în mod clar, în acest caz, este necesară o singură comparație. Prin urmare, numărul total de comparații este (n – 1) + (n – 2) … (2) + (1) = n (n – 1) / 2 sau O (n2).

Cel mai bun caz pentru sortarea cu bule apare atunci când lista este deja sortată sau aproape sortată. În cazul în care lista este deja sortată, sortarea cu bule se va încheia după prima iterație, deoarece nu au fost făcute swap-uri. De fiecare dată când se face o trecere prin listă și nu au fost făcute swap-uri, este sigur că lista este sortată. Sortarea cu bule este eficientă și atunci când un element aleatoriu trebuie să fie sortat într-o listă sortată, cu condiția ca elementul nou să fie plasat la început și nu la sfârșit. Când este plasat la început, acesta va apărea pur și simplu până la locul corect, iar a doua iterație prin listă va genera 0 swapuri, încheind sortarea. Amintiți-vă că, dacă elementul aleatoriu este plasat la sfârșit, sortarea cu bule își pierde eficiența, deoarece fiecare element mai mare decât trebuie să bule până la vârf.

Cel mai rău caz absolut pentru sortarea cu bule este atunci când cel mai mic element al listei este la capătul mare. Deoarece în fiecare iterație doar cel mai mare element nesortat este pus în locația corectă, atunci când cel mai mic element este la sfârșit, va trebui schimbat de fiecare dată prin listă și nu va ajunge în partea de sus a listei până când toate n s-au produs iterații. În acest caz cel mai rău, sunt necesare n iterații de swap-uri n / 2, astfel încât ordinea este, din nou, n2.

Cel mai bun caz: nCaz mediu: n2Cel mai rău caz: n2

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *