Kaundan[Itago][Ipakita]
Ang siyensya sa kompyuter kay bahin sa pagsabut sa pagkakomplikado sa mga algorithm ug istruktura sa datos.
Adunay ka usa ka lista sa mga butang nga kinahanglan ihan-ay, apan wala ka’y oras o kahinguhaan sa paggamit sa usa ka labi ka komplikado nga algorithm sa paghan-ay.
Ang insertion sorting maoy usa sa pinakasimple nga sorting algorithms, pero kini mahimong hinay alang sa dagkong mga lista.
Ang sayon nga pagpatuman ug pagsabot naghimo niini nga pamaagi nga paborito sa mga programmer. Kini perpekto alang sa gagmay nga mga lista o kung kinahanglan nimo ang usa ka dali nga solusyon.
Sa kini nga post sa blog, atong tan-awon ang pagkakomplikado sa oras sa pagsunud sa pagsulud. Kini nga algorithm gigamit sa paghan-ay sa mga arrays, ug kini adunay runtime nga O(n2). Nagpasabot kini nga ang pagkakomplikado sa oras nagdugang sa gidak-on sa laray.
Bisan pa, kini nga algorithm mahimong mas paspas kanunay kaysa sa ubang mga algorithm sa paghan-ay, sama sa quicksort.
Atong tan-awon pag-ayo kung giunsa ang pagsunud sa pagsulud molihok!
Unsa ang Insertion Sort Algorithm?
Usa ka elemento sa usa ka higayon, ang insertion sort nagmugna og usa ka sortable array, nga sagad gitawag nga listahan.
Pananglitan, ang paghan-ay gipadapat sa komplikado nga mga programa sa kompyuter sama sa mga compiler, diin ang han-ay sa mga token importante sa interpretasyon sa programa.
Giunsa Pagsulud ang Pagsunud?
Kung mogamit kita og insertion sort aron paghan-ay sa usa ka array, ang algorithm magsugod pinaagi sa pagpangita sa pinakagamay nga butang sa listahan ug isulod kini sa hustong posisyon.
Dayon makit-an niini ang sunod nga pinakagamay nga butang ug isulod kini sa hustong posisyon, ug uban pa.
Ang algorithm nagtrabaho pinaagi sa pag-loop sa lista, pagtandi sa matag butang sa usa nga nag-una niini.
Kung ang mga butang naa sa sayup nga pagkahan-ay, ang algorithm nagbaylo kanila. Gisusi dayon niini kung ang lista gihan-ay, ug kung mao, natapos ang algorithm.
Sa praktis, ang insertion sort kanunay nga gipatuman gamit ang pipila ka linya sa code, nga naghimo niini nga usa ka popular nga pagpili alang sa paghan-ay sa gagmay nga mga arrays. Bisan pa, ang pagkakomplikado sa oras kinahanglan nga tagdon kung gamiton kini nga algorithm.
Panig-ingnan:
Ania ang usa ka pananglitan kung giunsa ang pagsunud sa insertion molihok. Atong gamiton ang mosunod nga array:
1, 2, 3, 4, 5, 6
Ang algorithm magsugod pinaagi sa pagpangita sa pinakagamay nga butang sa lista, nga mao ang 1. Kini dayon gisal-ot kini sa husto nga posisyon, ang unang posisyon. Dayon makit-an niini ang sunod nga pinakagamay nga butang, nga mao ang 2. Gisal-ot kini sa husto nga posisyon, nga mao ang ikaduha nga posisyon.
Dayon makit-an niini ang sunod nga pinakagamay nga butang, nga mao ang 3. Gisal-ot kini sa husto nga posisyon, nga mao ang ikatulo nga posisyon.
Gipangita dayon niini ang sunod nga pinakagamay nga butang, nga mao ang 4. Gisal-ot kini sa husto nga posisyon, nga mao ang ikaupat nga posisyon, ug uban pa. Ang lista nahan-ay na!
Atong makita gikan sa panig-ingnan nga ang algorithm nagkinahanglan og unom ka pagtandi ug pagbayloay sa paghan-ay sa listahan. Kini tungod kay nagkinahanglan kini og n2 pagtandi ug pagbayloay aron paghan-ay sa usa ka lista sa n aytem. Niini nga kaso, n=6.
Giunsa Pagpauswag ang Pagkakomplikado sa Oras sa Pagsunud sa Pagsunud?
Samtang ang insertion sort adunay runtime nga O(n2), mahimo kining pauswagon pinaagi sa paggamit sa mas maayong algorithm sa paghan-ay, sama sa quicksort.
Ang Quicksort adunay O(n log n) runtime, nga mas paspas kay sa O(n2).
Apan, sa pipila ka mga kaso, ang pag-sort sa pag-sort mahimong mas paspas kaysa quicksort.
Pananglitan, kung ang lista naa na sa pagkahan-ay, ang pag-sort sa pagsunud gamay ra ang oras kaysa sa quicksort.
Sa praktis, ang insertion sort kanunay nga gipatuman gamit ang pipila ka linya sa code, nga naghimo niini nga usa ka popular nga pagpili alang sa paghan-ay sa gagmay nga mga arrays.
Bisan pa, ang pagkakomplikado sa oras kinahanglan nga tagdon kung gamiton kini nga algorithm.
Mga Komplikado sa Panahon
Labing Grabe nga Kakomplikado sa Kaso O(n2):
Ang pagkakomplikado sa oras nagdugang sa gidak-on sa array. Nagkinahanglan kini og n2 pagtandi ug pagbayloay aron paghan-ay sa usa ka lista sa n mga butang.
Pananglitan, kung kita adunay usa ka han-ay sa gidak-on nga 1000, ang algorithm magkuha ug 1,000,000 nga pagtandi ug pagbayloay aron mahan-ay ang laray.
Labing Maayo nga Pagkakomplikado sa Kaso O(n):
Ang pagkakomplikado sa oras parehas sa gidak-on sa input array. Ako
t nagkinahanglan ug n pagtandi ug pagbayloay sa paghan-ay sa usa ka lista sa n mga butang. Pananglitan, tagda ang usa ka han-ay sa gidak-on 5. Ang algorithm magkuha ug lima ka pagtandi ug pagbayloay aron mahan-ay ang laray.
Average Case Complexity O(n2):
Ang pagkakomplikado sa oras kay tali sa pinakagrabe ug labing maayo nga pagkakomplikado sa kaso niini nga kaso.
Nagkinahanglan kini og n2 pagtandi ug pagbayloay aron paghan-ay sa usa ka lista sa n mga butang.
Busa, ang insertion sorting usa ka stable sorting algorithm.
Ngano nga Stable ang Insertion Sort?
Ang insertion sort kay stable tungod kay kini nagpreserbar sa han-ay sa managsama nga mga elemento sa input array.
Importante kini alang sa daghang mga aplikasyon, sama sa pagkuha sa datos o pagtuki sa pinansyal. Pananglitan, kung kita adunay duha ka lista sa mga numero ug gusto nga itandi kini, kinahanglan natong sigurohon nga ang han-ay sa mga elemento mapreserbar.
Kung ang mga lista wala masunud, dili naton kini itandi sa tukma.
Leave sa usa ka Reply