2023(e)ko martxoaren 26(a), igandea

10. astea | array bat sailkatu/ordenatu







Zenbaki osoen array bat irudikatzen dute dantzariek, aukeraketa algoritmoa aplikatuz arraya sailkatuko dute





Demagun array dimentsiobakar bat dugula (bektore bat) eta bere elementuak zenbaki errealak direla, 0-tik 9-ra bitarteko alde osoa eta dezimal bakarra duten zenbaki errealak alegia. Eskatzen digute array hori sailkatzea txikitik handira. Lagungarria izan daitekeelakoan, hitzezko azalpena ArrayAlgoritmoak_5 [36 minutu 54 segundo] bideo honetan ikus dezakezu.



Sailkatzeko algoritmo desberdinetatik aukeraketa algoritmoa azalduko dugu ulerterraza delako, une bakoitzean zenbakirik txikiena aukeratuko dugu. Hauxe litzateke algoritmoaren irudia:







Eskeman ikus daitekeenez k kontagailuaren laugarren iterazioan gaude, ordurako array sailkatuaren lehen hiru elementuak zehaztu dira, eta iterazio honetan aurkituko den minimoa gelaxka ilunean kokatuko dugu (k=4 posizioan alegia). Laugarren iterazioari dagokion minimoa bilatzeko, arrayaren  sailkatu/ordenatu gabeko aldean begiratu beharra dago eta horretarako j kontagailua erabiliko da.



k=4 iterazioari dagokion minimoa zehazteko Min eta Pos aldagai laguntzaileen bitartez egiten da. Hasiera batean Min aldagaian sailkatu/ordenatu gabeko tartearen lehen elementuaren balioa gordetzen da, hots, Min aldagaian A[k] elementuaren balioa gordetzen da eta Pos aldagaian elementu horri dagokion k posizioa. Hasieraketak egin ondoren, barneko FOR-DO bitartez sailkatu/ordenatu gabeko aldea aztertzen da elementurik txikiena zehaztuz (bere balioa eta bere posizioa zehaztuz). Laugarren iterazioan minimoa zein den jakitean, array sailkatuan dagokion tokira (k=4 posiziora) eraman behar da, horregatik k eta Pos indizedun elementuak elkar trukatu egin behar dira.






Hona hemen iturburu-programa:








Gauza bera egin daiteke erregistroen bektore batekin. Ikus dezagun adibidez ondoko erregistroan oinarritutako bektore bat nola sailkatuko dugun:


    ...
const
BEHEMUGA = 1 ;
GOIMUGA = 9 ;
type
tsKatea = string[20] ;
trdDatuak = record
sIzena: tsKatea ;
rZenbakia: real ;
end ;
tardZerrenda = array[BEHEMUGA..GOIMUGA] of trdDatuak ;
...


Hona hemen iturburu-programa:










Baina ikusi dugun aukeraketa algoritmoa ez da bakarra, array bat sailkatzeko algoritmo asko daude. Grafikoak eta soinuak erabiliz hemen erakusten dira algoritmo garrantzitsuenak:






 

iruzkinik ez:

Argitaratu iruzkina