Järjestysalgoritmien tehokkuuden vertailu : pika-, lomitus- ja kuplalajittelun erot
Koskinen, Iiro (2023)
Koskinen, Iiro
2023
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-11-14
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202311139614
https://urn.fi/URN:NBN:fi:tuni-202311139614
Tiivistelmä
Järjestysalgoritmien merkitys yhteiskunnalle on kasvanut viime vuosina datan määrän räjähdysmäisen kasvun takia. Datan käsittely vaatii usein datan järjestämistä, sillä monet algoritmit vaativat syötteeksi ottamansa datan olevan tietyssä järjestyksessä. Näin ollen järjestysalgoritmin suoritusaika voi vaikuttaa paljon itse algoritmia suurempien kokonaisuuksien suoritustehoon. Järjestysalgoritmeja on kuitenkin monia, ja niiden tehokkuuksissa voi olla suuria eroja. Tämän takia oikean järjestysalgoritmin valinta ei aina ole helppoa.
Tämän työn tarkoitus on helpottaa valintaa työssä käsiteltävien algoritmien osalta. Työssä vertaillaan kolmea järjestysalgoritmia, keskittyen erityisesti niiden tehokkuuteen ja tehokkuuksien eroihin. Algoritmit ovat pikalajittelu (engl. quicksort), lomituslajittelu (merge sort) ja kuplalajittelu (bubble sort). Vertailu on toteutettu osittain kirjallisuuskatsauksena ja osittain empiirisenä tutkimuksena. Kirjallisuuskatsauksessa käsitellään aiempien, kyseisiä algoritmeja vertailevien tutkimusten tuloksia. Omassa tutkimuksessa mitattiin algoritmien tehokkuuksia eri kokoisilla standardoiduilla datajoukoilla. Joukot koostuivat satunnaisesta positiivisesta datasta, satunnaisesta negatiivisesta datasta, järjestetystä ja käänteisesti järjestetystä datasta sekä lähes järjestetystä datasta.
Tutkielman perusteella kuplalajittelu on keskimääräisessä tapauksessa huomattavasti hitaampi kuin pikalajittelu tai lomituslajittelu. Pika- ja lomituslajittelun välinen ero ei ollut yhtä selvä. Lomituslajittelu oli suurimmassa osassa tutkimuksia nopeampi kuin pikalajittelu. Kuitenkin osassa tutkimuksista järjestys oli päinvastainen. Pikalajittelun suurin heikkous on sen tehokkuus huonoimmassa mahdollisessa tilanteessa. Tällöin sen tehokkuus on jopa kuplalajittelua huonompi. Lomituslajittelun tehokkuus taas pysyi lähes vakiona datan muodosta riippumatta. Näin ollen lomituslajittelua voidaan pitää yleisesti parhaana tutkielmassa käsitellyistä algoritmeista.
Tämän työn tarkoitus on helpottaa valintaa työssä käsiteltävien algoritmien osalta. Työssä vertaillaan kolmea järjestysalgoritmia, keskittyen erityisesti niiden tehokkuuteen ja tehokkuuksien eroihin. Algoritmit ovat pikalajittelu (engl. quicksort), lomituslajittelu (merge sort) ja kuplalajittelu (bubble sort). Vertailu on toteutettu osittain kirjallisuuskatsauksena ja osittain empiirisenä tutkimuksena. Kirjallisuuskatsauksessa käsitellään aiempien, kyseisiä algoritmeja vertailevien tutkimusten tuloksia. Omassa tutkimuksessa mitattiin algoritmien tehokkuuksia eri kokoisilla standardoiduilla datajoukoilla. Joukot koostuivat satunnaisesta positiivisesta datasta, satunnaisesta negatiivisesta datasta, järjestetystä ja käänteisesti järjestetystä datasta sekä lähes järjestetystä datasta.
Tutkielman perusteella kuplalajittelu on keskimääräisessä tapauksessa huomattavasti hitaampi kuin pikalajittelu tai lomituslajittelu. Pika- ja lomituslajittelun välinen ero ei ollut yhtä selvä. Lomituslajittelu oli suurimmassa osassa tutkimuksia nopeampi kuin pikalajittelu. Kuitenkin osassa tutkimuksista järjestys oli päinvastainen. Pikalajittelun suurin heikkous on sen tehokkuus huonoimmassa mahdollisessa tilanteessa. Tällöin sen tehokkuus on jopa kuplalajittelua huonompi. Lomituslajittelun tehokkuus taas pysyi lähes vakiona datan muodosta riippumatta. Näin ollen lomituslajittelua voidaan pitää yleisesti parhaana tutkielmassa käsitellyistä algoritmeista.
Kokoelmat
- Kandidaatintutkielmat [8996]