Edukien aurkibidea[Ezkutatu][Erakutsi]
Informatika algoritmoen eta datu-egituren konplexutasunak ulertzea da.
Ordenatu beharreko elementuen zerrenda duzu, baina ez duzu denbora edo baliabiderik ordenatzeko algoritmo konplexuago bat erabiltzeko.
Txertatze-ordenaketa ordenatzeko algoritmo errazenetako bat da, baina motela izan daiteke zerrenda handietarako.
Inplementazio eta ulermen errazak metodo hau programatzaileen artean gogokoena bihurtu dute. Ezin hobea da zerrenda txikietarako edo irtenbide azkar bat behar duzunean.
Blog-eko argitalpen honetan, txertaketak ordenatzeko denboraren konplexutasuna aztertuko dugu. Algoritmo hau matrizeak ordenatzeko erabiltzen da, eta O (n2). Horrek esan nahi du denboraren konplexutasuna handitzen dela arrayaren tamainarekin.
Hala ere, algoritmo hau beste ordenatzeko algoritmoak baino azkarragoa izan daiteke sarritan, hala nola, quicksort.
Ikus dezagun hurbilagotik nola funtzionatzen duen txertatzeko ordenak!
Zer da Txertaketa Ordenatzeko Algoritmoa?
Elementu bat aldi berean, txertatzeko ordenak sorta daitekeen array bat sortzen du, maiz zerrenda gisa deitzen dena.
Esate baterako, ordenaketa programa konplikatuetan aplikatzen da, hala nola konpiladoreetan, non tokenen ordena programaren interpretaziorako garrantzitsua den.
Nola funtzionatzen du txertaketak ordenatzeko?
Array bat ordenatzeko txertatze-ordena erabiltzen dugunean, algoritmoa zerrendako elementurik txikiena bilatuz eta posizio egokian txertatuz hasten da.
Ondoren, hurrengo elementurik txikiena aurkitzen du eta posizio egokian sartzen du, eta abar.
Algoritmoak zerrendan zehar biraka eginez funtzionatzen du, elementu bakoitza aurretik datorrenarekin alderatuz.
Elementuak ordena okerrean badaude, algoritmoak trukatzen ditu. Ondoren, zerrenda ordenatuta dagoen egiaztatzen du, eta hala badagokio, algoritmoa amaitzen den.
Praktikan, txertatze-ordena sarritan inplementatzen da kode-lerro batzuk erabiliz, eta array txikiak ordenatzeko aukera ezaguna da. Hala ere, denboraren konplexutasuna kontuan hartu behar da algoritmo hau erabiltzean.
Adibidea:
Hona hemen txertatzeko ordenak nola funtzionatzen duen erakusten duen adibide bat. Honako array hau erabiliko dugu:
1, 2, 3, 4, 5, 6
Algoritmoa zerrendako elementurik txikiena aurkitzen hasten da, hau da, 1. Ondoren, posizio egokian txertatzen du, lehen posizioan. Ondoren, hurrengo elementurik txikiena aurkitzen du, hau da, 2. Kokapen egokian sartzen du, hau da, bigarren posizioan.
Ondoren, hurrengo elementurik txikiena aurkitzen du, hau da, 3. Kokapen egokian txertatzen du, hau da, hirugarren posizioan.
Ondoren, hurrengo elementurik txikiena aurkitzen du, hau da, 4. Kokapen egokian sartzen du, hau da, laugarren posizioan, eta abar. Zerrenda ordenatuta dago!
Adibidetik ikus dezakegu algoritmoak sei konparazio eta truke hartzen dituela zerrenda ordenatzeko. Hau da n hartzen duelako2 konparaketak eta trukeak n elementuko zerrenda bat ordenatzeko. Kasu honetan, n=6.
Nola hobetu txertatzeko ordenatzeko denbora konplexutasuna?
Txertatze ordenatzeak O (n2), hobetu daiteke ordenatzeko algoritmo hobea erabiliz, hala nola, quicksort.
Quicksort-ek O (n log n) exekuzio-denbora du, O (n) baino askoz azkarragoa dena2).
Hala ere, kasu batzuetan, txertaketa-ordenaketa azkarragoa izan daiteke sailkapen azkarra baino.
Esate baterako, zerrenda ordenatuta badago, txertaketak ordenatzeko denbora gutxiago beharko du sailkapen azkarrak baino.
Praktikan, txertatze-ordena sarritan inplementatzen da kode-lerro batzuk erabiliz, eta array txikiak ordenatzeko aukera ezaguna da.
Hala ere, denboraren konplexutasuna kontuan hartu behar da algoritmo hau erabiltzean.
Denboraren konplexutasunak
Kasurik txarrena konplexutasuna O(n2):
Denboraren konplexutasuna handitu egiten da arrayaren tamainarekin. n hartzen du2 konparaketak eta trukeak n elementuko zerrenda bat ordenatzeko.
Adibidez, 1000 tamainako array bat badugu, algoritmoak 1,000,000 konparazio eta truke hartuko ditu array-a ordenatzeko.
Kasurik onenaren konplexutasuna O(n):
Denboraren konplexutasuna sarrerako arrayaren tamainaren berdina da. I
t-k n konparaketa eta truke hartzen ditu n elementuko zerrenda bat ordenatzeko. Adibidez, kontuan hartu 5 tamainako array bat. Algoritmoak bost konparazio eta truke egingo ditu array-a ordenatzeko.
Kasuen batez besteko konplexutasuna O(n2):
Denboraren konplexutasuna kasu honetan kasurik txarrenaren eta hoberenen arteko konplexutasuna da.
n hartzen du2 konparaketak eta trukeak n elementuko zerrenda bat ordenatzeko.
Beraz, txertatze-ordenaketa ordenatze-algoritmo egonkorra da.
Zergatik da egonkorra da txertaketa ordenatzea?
Txertazioaren ordena egonkorra da sarrerako matrizeko elementu berdinen ordena mantentzen duelako.
Hau garrantzitsua da aplikazio askotan, hala nola, datuak berreskuratzeko edo finantza-analisirako. Adibidez, bi zenbaki-zerrenda baditugu eta konparatu nahi baditugu, elementuen ordena gordetzen dela ziurtatu behar dugu.
Zerrendak ordenatzen ez badira, ez ditugu zehaztasunez alderatuko.
Utzi erantzun bat