Table of Contents[Veşartin][Rêdan]
Zanistiya komputerê hemî li ser têgihîştina tevliheviyên algorîtmayan û avahiyên daneyê ye.
Lîsteya we ya tiştên ku divê werin rêz kirin hene, lê wext û çavkaniyên we tune ku hûn algorîtmayek cûrbecûr tevlihevtir bikar bînin.
Rêzkirina binavkirinê yek ji wan algorîtmayên cûrbecûr yên hêsan e, lê ji bo navnîşên mezin dikare hêdî be.
Pêkanîna hêsan û têgihiştina vê rêbazê di nav bernamenûsan de bijare. Ew ji bo navnîşên piçûk an jî gava ku hûn hewceyê çareseriyek lezgîn e bêkêmasî ye.
Di vê posta blogê de, em ê li tevliheviya demê ya dabeşkirina têketinê binêrin. Ev algorîtma ji bo birêkûpêkkirina rêzan tê bikar anîn, û dema xebitandinê ya O(n) heye2). Ev tê wê wateyê ku tevliheviya demê bi mezinahiya rêzê re zêde dibe.
Lêbelê, ev algorîtma dikare pir caran ji algorîtmayên din ên cûrbecûr zûtir be, wek mînak sortkirina bilez.
Werin em ji nêz ve mêze bikin ka çawa dabeşkirina têkelê dixebite!
Algorîtmaya Rêzkirina Insertion Çi ye?
Yek hêmanek di demekê de, cûrbecûr veqetandinê rêzek birêkûpêk çêdike, ku bi gelemperî wekî navnîşek tête binav kirin.
Mînakî, rêzkirin di bernameyên kompîturê yên tevlihev ên wekî berhevkeran de tê sepandin, ku rêza nîşanan ji bo şîrovekirina bernameyê girîng e.
Meriv Birêkûpêk Çawa Kar dike?
Dema ku em cûrbecûr têxê bikar tînin da ku rêzek rêz bike, algorîtma bi dîtina tiştê herî piçûk di navnîşê de û xistina wê di cîhê rast de dest pê dike.
Dûv re ew tişta herî piçûk a paşîn dibîne û wê di cîhê rast de dixe, û hwd.
Algorîtma bi lîstina navnîşê dixebite, her tişt bi ya ku berî wê tê berhev dike.
Ger tişt di rêza xelet de bin, algorîtma wan diguhezîne. Dûv re ew kontrol dike ku bibîne ka navnîş rêzkirî ye, û heke wusa be, algorîtma bi dawî dibe.
Di pratîkê de, birêkûpêkkirina binavkirinê bi gelemperî bi karanîna çend rêzikên kodê tête bicîh kirin, ku ew ji bo cûrbecûr rêzikên piçûk vebijarkek populer dike. Lêbelê, dema ku vê algorîtmê bikar tînin divê tevliheviya demê were hesibandin.
Mînak:
Li vir mînakek e ku meriv çawa dabeşkirina têketinê dixebite. Em ê rêzika jêrîn bikar bînin:
1, 2, 3, 4, 5, 6
Algorîtm bi dîtina tiştê herî piçûk di lîsteyê de dest pê dike, ku ew 1 e. Dûv re ew têxe cîhê rast, pozîsyona yekem. Dûv re tişta herî piçûk a din, ku 2 ye, dibîne. Ew têxe cîhê rast, ku pozîsyona duyemîn e.
Dûv re tişta herî piçûk a din, ku 3 ye, dibîne. Ew têxe cîhê rast, ku pozîsyona sêyemîn e.
Dûv re tişta herî piçûk a din, ku 4 e, dibîne. Ew têxe cîhê rast, ku pozîsyona çaremîn e, û hwd. Naha navnîş hatî rêz kirin!
Em dikarin ji nimûneyê bibînin ku algorithm şeş berhevdan û guheztinan digire da ku navnîşê rêz bike. Ev e ji ber ku ew digire n2 danberhev û guheztin ji bo rêzkirina navnîşek n tiştan. Di vê rewşê de, n=6.
Meriv çawa Tevliheviya Demjimêra Danûstandinê ya Têkûpêk Baştir dike?
Dema ku cureya têkelê dema xebitandinê O(n2), ew dikare bi karanîna algorîtmayek rêkûpêkek çêtir, wek mînakek bilez, were çêtir kirin.
Quicksort xwedan dema xebitandinê O(n log n) ye, ku ji O(n) pir zûtir e2).
Lêbelê, di hin rewşan de, veqetandina birêkûpêk dikare ji sorkirina bilez zûtir be.
Mînakî, heke navnîş jixwe rêkûpêk be, veqetandina birêkûpêk dê ji sorkirina bilez kêmtir dem bigire.
Di pratîkê de, birêkûpêkkirina binavkirinê bi gelemperî bi karanîna çend rêzikên kodê tête bicîh kirin, ku ew ji bo cûrbecûr rêzikên piçûk vebijarkek populer dike.
Lêbelê, dema ku vê algorîtmê bikar tînin divê tevliheviya demê were hesibandin.
Tevliheviyên Demê
Tevliheviya doza herî xirab O(n2):
Tevliheviya demê bi mezinbûna rêzê re zêde dibe. Ew n digire2 danberhev û guheztin ji bo rêzkirina navnîşek n tiştan.
Mînakî, heke me rêzek mezinahiya 1000 hebe, algorîtma dê 1,000,000 berhevdan û guheztinan bigire da ku rêzê rêz bike.
Tevliheviya Doza Baştirîn O(n):
Tevliheviya demê wekî mezinahiya rêzika têketinê ye. ez
T n berawirdkirin û guheztinê digire da ku navnîşek ji n tiştan rêz bike. Mînakî, rêzek mezinahiya 5-ê bihesibînin. Algorîtma dê pênc berawirdkirin û guheztinan bigire da ku rêzê rêz bike.
Tevliheviya Doza Navîn O(n2):
Tevliheviya demê di vê rewşê de di navbera tevliheviyên rewşa herî xirab û çêtirîn de ye.
Ew n digire2 danberhev û guheztin ji bo rêzkirina navnîşek n tiştan.
Ji ber vê yekê, veqetandinê algorîtmayek dabeşkirinê ya domdar e.
Çima Insertion Sort Stable e?
Rêzkirina têketinê stabîl e ji ber ku ew rêza hêmanên wekhev di rêzika têketinê de diparêze.
Ev ji bo gelek serîlêdanan girîng e, wekî wergirtina daneyan an analîza darayî. Mînakî, ger du lîsteyên jimareyan hebin û bixwazin wan bidin ber hev, divê em piştrast bin ku rêza hêmanan parastî ye.
Ger lîste neyên rêz kirin, em ê wan bi duristî bidin ber hev.
Leave a Reply