Documente Academic
Documente Profesional
Documente Cultură
net/publication/345890118
CITATIONS READS
0 168
1 author:
Bogdan-Alexandru Soare
Polytechnic University of Bucharest
5 PUBLICATIONS 0 CITATIONS
SEE PROFILE
All content following this page was uploaded by Bogdan-Alexandru Soare on 15 November 2020.
Abstract: Această lucrare are ca scop prezentarea În Fig.1 putem observa clasamentul realizat de către IEEE
eficienței și comparația algoritmului de sortare QuickSort în pentru anul 2019 în ceea ce priveste nivelul de utilizare al
ceea ce privește timpul de execuție și memoria de program limbajelor de programare existente. În cadrul acestuia regăsim
ocupată pentru următoarele limbaje de programare: C++, limbaje din toate domeniile de activitate, precum: Web,
C, Java, Python și C#. Vor fi evidențiate avantajele și Enterprise, Mobile și Embedded. Primele cinci locuri din
dezavantajele implementării acestui algoritm în cadrul clasament sunt ocupate la un scor foarte strâns de următoarele
fiecărui limbaj enumerat anterior integrând în lucrarea limbaje: Python, Java, C și C++, patru dintre acestea urmând a
curentă reprezentarea grafică a timpilor de execuție fi discutate în capitolele ce urmează.
raportați la memoria utilizată.
Key Words: Limbaj de programare, timp de execuție,
memorie de program, cloud computing, IDE(Integrated
Development Environment).
I. INTRODUCERE II. A L G O R I T M UL Q U I C K S O RT
Un limbaj de programare reprezintă un limbaj de expresii și QuickSort este un algoritm de sortare eficient, ce oferă o
tehnici valide de formulare a instrucțiunilor pentru o platformă metodă sistematică de aranjare în ordine a elementelor unui
computațională. Orice limbaj de programare are definite un set fișier sau a unui vector. Acesta, în cazul unei implementări
de reguli sintactice și semantice ce dau posibilitatea eficiente poate fi de două sau chiar trei ori mai rapid decât
utilizatorului să specifice în mod exact și amănunțit acțiunile pe ceilalți competitori ai săi precum: MergeSort, HeapSort [1].
care trebuie sa le execute calculatorul. Fiecare limbaj de Algoritmul este unul ce funcționează pe principiul sortării
programare are o sintaxă și un set unic de cuvinte cheie pentru prin comparație, asta însemnând că poate sorta orice tip de
organizarea instrucțiunilor de program. elemente ce au o ordine bine definită. Implementările eficiente
Limbajele se pot clasifica în Low-Level reprezentând o ale acestui algoritm nu sunt stabile din punctul de vedere al
perspectivă mai apropiată de modul de abordare al calculatorului pașilor de desfășurare, acestia fiind puternic influențați de
în ceea ce privește instrucțiunile și High-Level reprezentând alegerea pivotului.
modul de abordare apropiat de utilizator. Pe scurt, QuickSort se bazează pe principiul Divide et
impera. Acesta împarte în două un vector de elemente urmând
ca mai apoi să sorteze recursiv pe fiecare dintre aceștia.
Fig. 1 Clasament IEEE - 2019 Top Limbaje de Programare [11] Fig. 2 Exemplu de aplicare a algoritmului QuickSort [12]
Principalii pași ai sortării de tip QuickSort:
Cazurile de bază ale acestei recursivități sunt reprezentate Best-Case – complexitate 𝑶(𝒏𝑳𝒐𝒈𝒏)
de vectorii de dimensiuni 0 sau 1, care sunt considerate a fi în Acest caz apare în momentul în care procesul de partiție alege
ordine prin definiție. Acestea sunt cazurile în care sortarea nu se drept pivot elemental din mijlocul vectorului. Acesta poate fi
mai aplicpă. reprezentat de următoarea ecuație:
Alegerea pivotului sau a pașilor de partiționare pot fi realizate
prin diferite metode: 𝑇(𝑛) = 2𝑇(𝑛/2) + 𝛳(𝑛)
Primii doi termeni sunt reprezentați de două apelări recursive, în Deși complexitatea din Worst-Case este este mult mai mare
timp ce ultimul termen este indicator al procesului de partiție. decât a multor alti algoritmi de sortare precum MergeSort și
k – numărul de elemente cu valori mai mici decât cea a pivotului; HeapSort, QuickSort este mult mai rapid în practică datorită
buclei interioare ce poate fi implementată eficient în cele mai
În tabelul I putem urmări complexitățile algoritmilor multe arhitecturi. QuickSort poate fi implementat în moduri
cei mai frecvent folosiți pentru sortarea de elemente. Este diferite prin schimbarea modalității de alegere a pivotului, motiv
evident faptul că timpul de execuție al algoritmului este puternic pentru care Worst-Case va fi un caz cu o frecvență de apariție
dependent de lungimea vectorului, și în cazul nostru, de strategia destul de scăzută.
aleasă pentru partiția pivotului. În continuare putem urmări cele Singurul algoritm de sortare, dintre cele prezentate în
trei cazuri posibile de complexitate în cadrul algoritmului tabelul I, considerat mai bun este MergeSort, în cazul unui
QuickSort [2]. volum foarte mare de date stocat în memoria externă.
R E F E R I NȚ E