Sortarea elementelor dintr-o listă este o sarcină mundane și de multe ori consumatoare de timp. Termenul de sortare se referă, în general, la aranjarea articolelor într-o listă în ordine ascendentă sau descendentă pe baza unei relații de ordine pre-specificate. Sortarea este adesea destinată căutării, ceea ce reprezintă încă o activitate fundamentală în prelucrarea datelor. Imaginați-vă cât de dificil ar fi să căutați un cuvânt în dicționar dacă cuvintele din acesta nu ar fi fost organizate sau sortate. Acesta este motivul pentru care intrările dintr-un dicționar sunt păstrate într-o ordine alfabetică standard. Numeroase sarcini și calcule devin fără efort prin simpla sortare. Și aici se găsesc algoritmi de sortare la imagine.
Un algoritm de sortare nu este altceva decât o metodă de organizare a elementelor dintr-o listă într-o anumită ordine, cum ar fi cea mai mică valoare până la cea mai mare valoare, valoarea cea mai mare până la cea mai mică, ordinea în creștere, ordinea descrescătoare, alfabetică etc. sunt ordine numerică și lexicografică. Algoritmii folosesc frecvent sortarea ca subrutină cheie. Există o varietate largă de algoritmi de sortare folosiți pe tot parcursul procesului, fiecare folosind un set bogat de tehnici. Un algoritm popular, dar la fel de puternic, este algoritmul Divide and Conquer, care este un algoritm bazat pe recursion multi-ramificat. Sortul rapid și Merge Sort sunt cei doi algoritmi frecvent utilizați pe baza algoritmului Divide and Conquer.
Quick Sort este un algoritm foarte eficient și eficient de sortare bazat pe abordarea divizării și cucerire care este destul de similară cu abordarea dinamică în care o problemă este împărțită în două sau mai multe sub-probleme și apoi rezolvată recursiv. Dacă mărimea sub-problemelor este suficient de mică, atunci ele sunt rezolvate pur și simplu într-o manieră simplă, fără nici o hassles. De asemenea, numit sort de schimb de partiții, algoritmul de sortare rapidă împarte lista care urmează a fi sortată în trei părți principale: 1) Elementul pivot (elementele centrale), 2) Elementele mai mici decât pivotul și 3) Elementele mai mari decât pivotul. Pivotul însuși este mutat între cele două grupuri în poziția finală, iar QUICK SORT este apoi aplicat recursiv.
Merge Sort este încă un alt algoritm de sortare generală bazat pe tehnica de divizare și cucerire. Este unul dintre algoritmii de sortare mai respectați și mai populari, proiectați pentru a fi utilizați eficient pentru sortarea datelor stocate extern într-un fișier. Acesta oferă comportament O (n log n) în cel mai rău caz, în timp ce utilizează O (n) stocare suplimentară. Se împarte o colecție "A" în două colecții mai mici, fiecare dintre ele fiind apoi sortată. În faza finală, aceste două colecții sortate sunt reunite într-o singură colecție de dimensiune n. Aceasta va fi lista sortată. Algoritmul este destul de rapid și este, de asemenea, un mod stabil, și este preferabil în mod ideal pentru Listele asociate.
- Atât sortarea rapidă, cât și sortarea de sortare sunt algoritmi de sortare bazați pe divizare și cucerire cu același principiu de bază - pentru a împărți o problemă în două sau mai multe sub-probleme și apoi a le rezolva recursiv. Cu toate acestea, acestea diferă în procedurile de îmbinare și în termeni de performanță. Quick Sort este în general mai bună și mai rapidă decât alți algoritmi de sortare, inclusiv Merge Sort atunci când vine vorba de setul de date mici, în timp ce Merge Sort păstrează consistența indiferent de tipul de seturi de date. Selecția rapidă este preferată în mod ideal pentru tablouri, în timp ce Merge Sort este preferată în mod ideal pentru Listele asociate.
- Sortarea algoritmului de sortare rapidă se face recursiv și fiecare apel recursiv necesită un stack. Nu necesită spațiu suplimentar pentru fuziune, cu excepția unui singur spațiu de memorie pentru fuziune. Deoarece este un algoritm de sortare pe loc, nu este nevoie de spațiu suplimentar pentru a efectua sortarea. De fapt, ea utilizează aceeași matrice în timp ce împarte și fuzionează matricea. În Merge Sort, pe de altă parte, există mai multe moduri de reprezentare a datelor într-un fișier sau într-un matrice, astfel că are nevoie de astfel de zone de lucru ca sub-fișiere sau matrice de aceeași dimensiune care necesită un spațiu suplimentar.
- Cel mai rău comportament de caz pentru Quick Sort apare atunci când partiționarea este dezechilibrată, care depinde de elementele utilizate pentru partiționare, caz în care algoritmul rulează asimptotic la fel de încet ca și tipul de inserție. Performanța celui mai rău caz al Clasificării rapide este O (n2) și este lăsat ca un exercițiu. Cu toate acestea, el poate fi evitat prin alegerea pivotului potrivit. Cel mai rău caz de Merge Sort, pe de altă parte, apare atunci când trebuie să facă un număr maxim de comparații. Având în vedere performanța liniară pentru fuziune, performanța celui mai rău caz al Merge Sort este O (n log2 n).
- Deși algoritmii de sortare rapidă și de sortare se bazează pe metoda divizării și cucerire pentru sortare, ele diferă prin metodele utilizate pentru a efectua procedurile de divizare și de îmbinare. Pentru Quick Sort, cea mai mare parte a lucrărilor este de a împărți lista în două sub-liste care are loc înainte de a fi sortate sub-listele. Pentru Merge Sort, cea mai mare parte a lucrării este de a îmbina două sub-liste care au loc după ce sub-listele sunt sortate. Merge Sortare necesită o matrice temporară pentru îmbinarea a două sub-arrays, în timp ce pentru Quick Sort nu este nevoie de spațiu suplimentar de matrice, făcându-l mai eficient spațiu decât Marge Sort.
Ambii algoritmi de sortare rapidă și de sortare se bazează pe abordarea divizării și cucerire pentru sortare. Cu toate acestea, ele diferă prin metodele utilizate pentru a efectua procedurile de divizare și de îmbinare. Ele practic lucrează pe același principiu - de a împărți o problemă în două sau mai multe sub-probleme și apoi de a le rezolva recursiv. Merge Sort este mai eficientă decât Quick Sort în cel mai rău caz, dar cele două sunt la fel de eficiente în cazul mediu. Însă Quick Sort este mai eficientă în spațiu decât Merge Sort. Deci, Quick Sort este fără îndoială mai rapid și mai bun decât Merge Sort, dar devine ineficient în câteva situații, cum ar fi atunci când vine vorba de comparații.