2024(e)ko martxoaren 20(a), asteazkena

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

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.