Table of Contents
Yhdistää lajitteleminen on suosittu vertailupohjainen lajittelualgoritmi, joka tunnetaan tehokkuudestaan ja ennustettavissa olevasta suorituskyvystään. Kun ymmärrät, miten laskea vertailujen määrä, voit auttaa optimoimaan sen toteutuksen ja analysoida sen suorituskykyä eri skenaarioissa.
Yhdistämisen peruskäsitteet
Yhdistää lajitelman jakaa matriisin pienempiin subarrayihin, lajittelee jokaisen subarray-ryhmän ja yhdistää sen sitten uudelleen yhteen. Ydintoiminto sisältää elementtien vertailun yhdistämisprosessin aikana, mikä määrittää tehtyjen vertailujen kokonaismäärän.
Vertailujen laskeminen yritysyhdistämisen aikana
Yhdistämisvaiheen aikana vertailuja tehdään valittaessa pienempää elementtiä kahdesta lajitellusta alasarjasta. Kunkin parin osalta vertailu lasketaan. Jos aliraateilla on koot n1 ja n2[]], niiden yhdistämiseen tarvittavien vertailujen enimmäismäärä on [n1 + n2 - 1.
Kokonaisvertailujen arviointi
Yhdistämislajin vertailujen kokonaismäärä voidaan arvioida analysoimalla kukin yhdistämistoiminto rekursiotasolta. Kokoluokan n osalta vertailut ovat yhteensä suunnilleen seuraavat:
- n log2 n keski- ja pahimmassa tapauksessa.
- Jokainen rekursiotaso käsittää subarray-yhdistelmien yhdistämisen, ja vertailujen kokonaismäärät ovat yhteenlaskettuja kaikilla tasoilla.
- Vertailujen määrä tasoa kohti kaksinkertaistuu, kun subarray-arvot kasvavat.
Käytännön laskentamenetelmä
Vertailujen laskemiseksi käytännössä simuloidaan yhdistämisprosessia tai käytetään rekursiivista suhdetta:
]C(n) = C(.../2...] + C(.../2....................................................................................................................................................................................................................................
jossa C[n][ on kokoluokan ]n[ kokonaisvertailu. Tämä rekursiivinen kaava vastaa vertailuja alaraajoissa ja yhdistämisen aikana.