Table of Contents
Algoritmien ajan ja tilan monimutkaisuuden ymmärtäminen auttaa niiden tehokkuuden arvioinnissa. Yhdistä lajittelu ja nopea lajitteleminen ovat kaksi suosittua lajittelualgoritmia, joilla on erilaiset suorituskykyominaisuudet. Tässä artikkelissa selitetään, miten niiden monimutkaisuus lasketaan.
Yhdistä kompleksi
Yhdistä lajitelma puoliksi, kunnes jokainen subarray sisältää yhden elementti. Yhdistämisprosessi yhdistää nämä subarrayt järjestyksessä.
Yhdistämistyypin aikakompleksisuus on []O(n log n) parhaissa, keskimääräisissä ja pahimmissa tapauksissa, koska se johdonmukaisesti jakaa matriisin ja yhdistää sen tehokkaasti.
Avaruuskompleksisuus on O(n), koska tarvitaan väliaikaisia elementtejä yhdistämisprosessin aikana.
Nopea Järjestä komplikaatio
Nopea lajittelee valitessaan pivot-elementtiä ja osioi matriisin alipiirroksiin, jotka ovat vähemmän tai suurempia kuin pivot. Tämä prosessi toistetaan rekursiivisesti.
Keskimääräinen aikakompleksi on O(n log n), mutta pahimmassa tapauksessa, kuten silloin, kun pienin tai suurin elementti on aina valittu pivotiksi, se hajoaa [O(n^2)[].
Nopean tavan tilakompleksisuus on yleensä [O(log n)[ rekursiivisen pinotilan vuoksi, mutta se voi olla suurempi riippuen toteutuksesta.
Tiivistelmä monimutkaisista seikoista
- Yhdistä lajittelu - aika: O(n log n), avaruus: O(n)
- Pikasormus - aika: Keskimääräinen O(n log n), pahin O(n^2), väli: O(log n)[]