Fizahan-takelaka[Afeno][Aseho]
Ny siansa informatika dia momba ny fahatakarana ny fahasarotan'ny algorithm sy ny rafitra data.
Manana lisitr'ireo singa mila alamina ianao, saingy tsy manam-potoana na loharano hampiasana algorithm fanasokajiana sarotra kokoa.
Ny fanasokajiana fampidirana dia iray amin'ireo algorithm fanasokajiana tsotra indrindra, saingy mety ho miadana izany ho an'ny lisitra lehibe.
Ny fampiharana mora sy ny fahatakarana dia nahatonga ity fomba ity ho ankafizin'ny mpandrindra. Tena mety amin'ny lisitra kely na rehefa mila vahaolana haingana ianao.
Amin'ity lahatsoratra bilaogy ity, hojerentsika ny fahasarotan'ny fotoana amin'ny fanasokajiana. Ity algorithm ity dia ampiasaina handaminana ny arrays, ary manana fotoanan'ny O(n2). Midika izany fa mitombo ny fahasarotan'ny fotoana miaraka amin'ny haben'ny array.
Na izany aza, ity algorithm ity dia mety ho haingana kokoa noho ny algorithm fanasokajiana hafa, toy ny quicksort.
Andeha hojerentsika akaiky ny fomba fiasan'ny fanasokajiana!
Inona no atao hoe Algorithm Sort Insertion?
Singa iray amin'ny fotoana iray, ny karazana fampidirana dia miteraka laharana azo alaina, izay antsoina matetika hoe lisitra.
Ohatra, ny fanasokajiana dia ampiharina amin'ny programa informatika sarotra toy ny compiler, izay zava-dehibe amin'ny fandikana ny programa ny filaharan'ny marika.
Ahoana no fiasan'ny fanasokajiana?
Rehefa mampiasa karazana fampidirana isika mba handaminana array, dia manomboka amin'ny fitadiavana ny singa kely indrindra ao anaty lisitra ny algorithm ary mampiditra azy amin'ny toerana mety.
Avy eo izy dia mahita ny zavatra kely indrindra manaraka ary mampiditra izany amin'ny toerana mety, sy ny sisa.
Ny algorithm dia miasa amin'ny alàlan'ny fihodinana amin'ny lisitra, mampitaha ny singa tsirairay amin'ny iray eo alohany.
Raha diso ny filaharan'ireo entana, dia mamadika azy ireo ny algorithm. Avy eo dia manamarina raha voalamina ny lisitra, ary raha izany dia tapitra ny algorithm.
Amin'ny fampiharana, ny fanasokajiana karazana dia matetika ampiasaina amin'ny fampiasana andalana vitsivitsy, ka mahatonga azy io ho safidy malaza amin'ny fanasokajiana array kely. Na izany aza, ny fahasarotan'ny fotoana dia tokony hodinihina rehefa mampiasa ity algorithm ity.
ohatra:
Ity misy ohatra iray amin'ny fomba fiasan'ny fanasokajiana. Hampiasa ity array manaraka ity izahay:
1, 2, 3, 4, 5, 6
Ny algorithm dia manomboka amin'ny fitadiavana ny zavatra kely indrindra ao amin'ny lisitra, dia ny 1. Avy eo dia ampidiro ao amin'ny toerana mety, ny toerana voalohany. Avy eo izy dia mahita ny zavatra kely indrindra manaraka, dia ny 2. Ampidiriny ao amin'ny toerana mety, dia ny toerana faharoa.
Avy eo izy dia mahita ny zavatra kely indrindra manaraka, dia ny 3. Ampidiriny ao amin'ny toerana mety, dia ny toerana fahatelo.
Avy eo izy dia mahita ny zavatra kely indrindra manaraka, dia ny 4. Ampidiriny amin'ny toerana mety, dia ny laharana fahefatra, sy ny sisa. Voalamina izao ny lisitra!
Hitantsika avy amin'ny ohatra fa ny algorithm dia maka fampitahana enina ary swap mba handaminana ny lisitra. Izany dia satria mila n2 fampitahana sy swap mba handaminana lisitry ny zavatra n. Amin'ity tranga ity, n = 6.
Ahoana ny fomba hanatsarana ny fahasarotan'ny fotoana fanasokajiana?
Raha toa ka misy ny fotoanan'ny O(n2), azo hatsaraina amin'ny alàlan'ny fampiasana algorithm fanasokajiana tsara kokoa, toy ny quicksort.
Quicksort dia manana O(n log n) runtime, izay haingana kokoa noho ny O(n2).
Na izany aza, amin'ny toe-javatra sasany, ny fanasokajiana fampidirana dia mety ho haingana kokoa noho ny quicksort.
Ohatra, raha efa milamina ny lisitra, dia haharitra ela kokoa noho ny quicksort ny fanasokajiana.
Amin'ny fampiharana, ny fanasokajiana karazana dia matetika ampiasaina amin'ny fampiasana andalana vitsivitsy, ka mahatonga azy io ho safidy malaza amin'ny fanasokajiana array kely.
Na izany aza, ny fahasarotan'ny fotoana dia tokony hodinihina rehefa mampiasa ity algorithm ity.
Fotoana sarotra
Fahasarotana tranga ratsy indrindra O(n2):
Mitombo ny fahasarotan'ny fotoana miaraka amin'ny haben'ny array. Mila n2 fampitahana sy swap mba handaminana lisitry ny zavatra n.
Ohatra, raha manana laharan'ny habe 1000 isika, dia haka fampitahana 1,000,000 sy swap ny algorithm mba handaminana ny array.
Sarotra tranga tsara indrindra O(n):
Ny fahasarotan'ny fotoana dia mitovy amin'ny haben'ny laharan'ny fampidirana. aho
t maka n fampitahana sy mifanakalo mba handaminana lisitry ny zavatra n. Ohatra, diniho ny laharan'ny habe 5. Ny algorithm dia haka fampitahana dimy sy swap mba handaminana ny array.
Sarobidy ny tranga O(n2):
Ny fahasarotan'ny fotoana dia eo anelanelan'ny olana ratsy indrindra sy tsara indrindra amin'ity tranga ity.
Mila n2 fampitahana sy swap mba handaminana lisitry ny zavatra n.
Noho izany, ny fanasokajiana insertion dia algorithm stable sorting.
Nahoana no Marin-toerana ny Insertion Sort?
Marin-toerana ny karazana fampidirana satria mitahiry ny filaharan'ny singa mitovy ao amin'ny laharan'ny fampidirana.
Zava-dehibe amin'ny fampiharana maro izany, toy ny fakana angon-drakitra na fanadihadiana ara-bola. Ohatra, raha manana lisitry ny isa roa isika ary te hampitaha azy ireo, dia mila ataontsika antoka fa voatahiry ny filaharan'ireo singa.
Raha tsy voalahatra ireo lisitra dia tsy hampitaha azy ireo amin'ny fomba marina izahay.
Leave a Reply