Ambele tehnici de sortare, sortarea rapidă și sortarea sunt construite pe metoda divizării și cuceririi în care setul de elemente este despărțit și apoi combinat după rearanjare. Modificarea rapidă necesită, de obicei, mai multe comparații decât îmbinarea sortului pentru sortarea unui set mare de elemente.
Diagramă de comparație
Bazele de comparație | Sortare rapida | Mergeți după sortare |
---|---|---|
Partiționarea elementelor din matrice | Împărțirea unei liste de elemente nu este neapărat împărțită în două. | Array este întotdeauna împărțit în jumătate (n / 2). |
Cel mai grav caz de complexitate | O (n2) | O (n log n) |
Funcționează bine | Suprafață mai mică | Funcționează bine în orice tip de matrice. |
Viteză | Mai rapid decât alți algoritmi de sortare pentru setul de date mici. | Viteza constantă în toate tipurile de seturi de date. |
Spațiu necesar pentru spațiul de stocare | Mai puțin | Mai Mult |
Eficienţă | Nu este eficient pentru magistralele mai mari. | Mai eficient. |
Metoda de sortare | Intern | Extern |
Definiția Quick Sort
Tipul rapid este algoritmul de sortare folosit în mod curent, deoarece este rapid pentru matricele scurte. Setul de elemente este împărțit în părți în mod repetat, până când nu este posibil să se împartă în continuare. Tipul rapid este, de asemenea, cunoscut sub numele de schimb de partiții . Utilizează un element cheie (cunoscut ca pivotul) pentru partiționarea elementelor. O partiție conține acele elemente care sunt mai mici decât elementul cheie. O altă partiție conține acele elemente care sunt mai mari decât elementul cheie. Elementele sunt sortate recursiv.
Să presupunem că A este o matrice A [1], A [2], A [3], ...... .., A [n] de n număr care trebuie sortate. Algoritmul de sortare rapidă cuprinde următoarele etape.
- Primul element sau orice element aleator selectat ca cheie, presupuneți cheia = A (1).
- Indicatorul "scăzut" este plasat la cel de-al doilea și indicatorul "sus" este poziționat la ultimul element al matricei, adică scăzut = 2 și în sus = n;
- În mod consecvent, creșteți indicatorul "scăzut" cu o poziție până când (A [low]>).
- În mod constant, decrementați indicatorul "sus" cu o poziție până la (A [sus] <= cheie).
- Dacă este mai mare decât interconectarea redusă A [joasă] cu A [sus].
- Repetați pașii 3, 4 și 5 până când condiția din pasul 5 nu reușește (adică în sus <= joasă), apoi schimbați A [sus] cu cheia.
- Dacă elementele rămase ale cheii sunt mai mici decât cheia, iar elementele din dreapta cheii sunt mai mari decât cheia, atunci matricea este împărțită în două subrecursuri.
- Procedura de mai sus este aplicată în mod repetat subarray-urilor până când întreaga matrice este sortată.
Avantaje și dezavantaje
Are un comportament mediu bun. Complexitatea timpului de rulare a sortimentului rapid este bună, deoarece este mai rapidă decât algoritmii, cum ar fi sortarea bulei, sortarea inserției și sortarea selecției. Cu toate acestea, este complexă și foarte recursivă, acesta fiind motivul pentru care nu este potrivit pentru rețele mari.
Definiția Merge Sort
Merge sort este un algoritm extern care se bazează, de asemenea, pe strategia de divizare și cucerire. Elementele sunt împărțite în sub-tablouri (n / 2) din nou și din nou până când rămâne doar un singur element, ceea ce scade semnificativ timpul de sortare. Utilizează un spațiu de stocare suplimentar pentru stocarea matricei auxiliare. Merge sortarea folosește trei tablouri în cazul în care două sunt folosite pentru stocarea fiecărei jumătăți, iar cea de-a treia este utilizată pentru stocarea listei finale sortate. Fiecare matrice este apoi sortată recursiv. În cele din urmă, subarrajele sunt fuzionate pentru a face dimensiunea n element a matricei. Lista întotdeauna împărțită în jumătate (n / 2), diferită de tipul rapid.
Fie A matricea n număr de elemente care urmează a fi sortate A [1], A [2], ........., A [n]. Modul de îmbinare urmează pașii date.
- Împărțiți matricea A într-o sub-array de aproximativ n / 2 sortată cu 2, ceea ce înseamnă că elementele din (A [1], A [2]), (A [3], A [ k], A [k + 1]), subarray-urile (A [n-1], A [n]) trebuie sortate.
- Combinați fiecare pereche de perechi pentru a obține lista submarinelor sortate de dimensiunea 4; (A [1], A [2], A [3], A [4]), ......, A [k-1] [k + 1], A [k + 2]), ......, (A [n-3], A [n-2], A [n-1] A [n]).
- Etapa 2 este efectuată în mod repetat până când nu există decât o singură matrice ordonată cu mărimea n.
Avantaje și dezavantaje
Algoritmul de sortare a fuziunii se execută exact în același mod și precis, indiferent de numărul de elemente implicate în sortare. Funcționează bine chiar și cu setul mare de date. Cu toate acestea, consumă o parte mai mare din memorie.
Diferențele cheie dintre sortarea rapidă și sortarea
- În felul de îmbinare, matricea trebuie împărțită în doar două jumătăți (adică n / 2). Pe de altă parte, într-un fel rapid, nu există nicio obligație de împărțire a listei în elemente egale.
- Cea mai gravă complexitate a sorții rapide este O (n2) deoarece necesită mult mai multe comparații în cea mai gravă condiție. În schimb, sortarea fuziunii are același caz cel mai rău și complexitatea medie a cazului, adică O (n log n).
- Merge sortarea poate funcționa bine pe orice tip de seturi de date, indiferent dacă este mare sau mică. Dimpotrivă, sortarea rapidă nu poate funcționa bine cu seturi de date mari.
- Tipul rapid este mai rapid decât îmbinarea în anumite cazuri, cum ar fi seturile de date mici.
- Merge sortarea necesită spațiu suplimentar de memorie pentru a stoca matricele auxiliare. Pe de altă parte, sortarea rapidă nu necesită mult spațiu pentru stocarea suplimentară.
- Merge sortarea este mai eficientă decât sortarea rapidă.
- Modulul de sortare rapidă este metoda de sortare internă unde datele care urmează să fie sortate sunt ajustate la un moment dat în memoria principală. În schimb, sortarea de fuziune este metoda de sortare externă în care datele care urmează a fi sortate nu pot fi stocate în memorie în același timp, iar altele trebuie păstrate în memoria auxiliară.
Concluzie
Modificarea rapidă este o situație mai rapidă, dar este ineficientă în anumite situații și efectuează și o mulțime de comparații în comparație cu tipul de îmbinare. Deși sortarea fuziunii necesită o comparație mai mică, este nevoie de un spațiu de memorie suplimentar de 0 (n) pentru stocarea matricei suplimentare în timp ce sortarea rapidă are nevoie de spațiu O (log n).