- Ukuqonda ukuthi yiziphi izakhiwo zedatha kanye nama-algorithms nokuthi zihlangana kanjani kukuvumela ukuthi ubhale izinhlelo ezisebenza kahle futhi ezingandiswa.
- Ukwazi kahle ama-array, ama-stack, imigqa, uhlu oluxhunyiwe, izihlahla, amagrafu, ama-try, kanye namathebula e-hash kubalulekile ekuhleleni kochwepheshe kanye nezingxoxo zobuchwepheshe.
- Ukukhetha isakhiwo sedatha esifanele kanye ne-algorithm efanele kuthinta ngqo ukusebenza, ukusetshenziswa kwememori, kanye nokugcinwa kwesofthiwe.
- Ukufunda okuqhubekayo, okunesisekelo esihle semfundiso kanye nokuzijwayeza okuningi okuqondisiwe, kuyindlela ephumelela kakhulu yokuqinisa le mibono.
Ama-algorithms nezakhiwo zedatha Ziyizingcezu ezimbili ezihlangana njengephazili: enye ichaza inqubo yokuxazulula inkinga, kanti enye inquma ukuthi silugcina kuphi futhi kanjani ulwazi. Nakuba kungase kuzwakale kungokwezemfundo, ukwazi kahle lolu bhangqa yikho okuhlukanisa ikhodi esebenza nje kwenye endiza futhi ikhula ngaphandle kokuphuka.
Uma ufuna ukuphishekela uhlelo lobuchwepheshe, ukulungiselela izingxoxo zobuchwepheshe, noma ukuyeka nje ukuhlushwa yizivivinyo ezifana neLeetCode neCodewars, udinga isisekelo esiqinile ku- izakhiwo zedatha kanye nama-algorithmsKuyo yonke le ndatshana uzobona ukuthi ziyini, kungani zibaluleke kangaka, yiziphi izinhlobo eziyinhloko ezikhona, yiziphi imisebenzi eyisisekelo eziyenzayo kanye nemibuzo evame ukuvela ezivivinyweni nasezinqubweni zokukhetha.
Ziyini izakhiwo zedatha kanye nama-algorithms?
uhlaka lwedatha Ngokuyisisekelo, kuyindlela ethile yokuhlela nokugcina ulwazi kwimemori ukuze ukwazi ukusebenza kahle kulo. Le nhlangano ayihleliwe: inquma ngqo ukuthi yimiphi imisebenzi esheshayo nokuthi yimiphi ebiza kakhulu (faka, sesha, susa, dlula, njll.).
Uma ukhetha isakhiwo sedatha esifanele, uhlelo lwakho lungaphatha imiqulu emikhulu yedatha ngaphandle kokujuluka; uma ukhetha kabi, ngisho nokusetshenziswa okuncane kungaba kancane, kudle inkumbulo eningi kakhulu, noma kube nzima ukukugcina ngokuhamba kwesikhathi.
I-algorithm Kuwuchungechunge olulinganiselwe noluhlelekile lwezinyathelo ezichazwe kahle oluguqula okokufaka kube okuphumayo ukuze kuxazululwe inkinga ethile. Kufana neresiphi yokupheka: ikutshela ukuthi wenzeni, ngokulandelana ngakuphi, nangaphansi kwaziphi izimo, kodwa ayikhathazeki ngokuthi uzigcina kanjani izithako esiqandisini, okuzoba yingxenye yesakhiwo sedatha.
Kusayensi yekhompyutha, i-algorithm ngayinye yaklanywa ngohlobo lwedatha ezosebenza nayo engqondweni. Ukukhetha isakhiwo sedatha akuyona imininingwane encane: Isakhiwo kanye ne-algorithm kuyahambisanaFuthi izinguquko ezincane kwenye yalezi zingxenye ezimbili zingakhuphula noma zinciphise ukusebenza.
Ngokombono wemfundiso, ababhali abanjengoNiklaus Wirth basakaze lo mbono kusukela ngawo-70 ukuthi ama-algorithms + izakhiwo zedatha = izinhleloEmashumini eminyaka kamuva, kusalokhu kuyiqiniso: akunandaba ukuthi uhlela nge-Java, i-Python, i-C++ noma uvela ekamu lokuqeqeshwa, okuzodingeka kuwe ezingxoxweni nasemaphrojekthini abalulekile ukwazi ukuthi ungazikhetha kanjani futhi uzihlanganise kanjani zombili izinto kahle.
Kungani zibaluleke kangaka ekuhleleni izinhlelo?
Kunoma yiluphi uhlelo lokusebenza lwangempela, noma ngabe lulula kangakanani, uhlala usebenza ngedatha: amaholo, imikhiqizo, abasebenzisi, ukuthengiselana, imizila, amadokhumentiAmarekhodi e-log, njll. Umbuzo awukhona ukuthi uzoyiphatha yini idatha, kodwa ukuthi uzoyihlela kanjani ukuze ikhodi yakho isheshe, icace, futhi kube lula ukuyigcina.
Izakhiwo zedatha zisetshenziselwa ukugcina ulwazi ngendlela ehlelekile neqondakalayo ngokwenkinga. Cha es lo mismo Ukudinga ukufinyelela njalo into yokuqala, ukusesha ngokhiye, ukuzulazula ngokulandelana, ukufaka phakathi, noma ukususa njalo; iphethini ngayinye yokusebenzisa ifanelana kangcono nesakhiwo esihlukile.
Ngokwabo, ama-algorithms avumela ukucubungula leyo datha ngendlela ephumelelayo: zihlele, zihlunge, sesha izakhi, thola imizila efanele, thola amaphethini nge imininingwane yezimayini, lungisa izinsiza, njll. Izinkinga eziningi ezibonakala zinzima ziba yinto encane uma uthola inhlanganisela efanele ye-algorithm kanye nesakhiwo sedatha.
Ezingxoxweni zobuchwepheshe zokuthuthukiswa kwesofthiwe, akuvamile ukubuzwa umbuzo ongakhulumi ngqo ngalezi zihloko. Ngezinye izikhathi umbuzo ukhuluma ngokucacile ngesakhiwo, njengokuthi "sinikezwe umuthi ophindwe kabili…", kanti ngezinye izikhathi usuke ungabonakali: "sifuna ukubala ukuthi umlobi ngamunye unamabhuku amangaki," okusikisela ukusebenzisa ithebula le-hash noma imephu yenani lokhiye.
Ngaphezu kwalokho, ukuqeqeshwa okusemthethweni nochwepheshe kuvame ukujikeleza kule ndawo. Amanyuvesi amaningi nezinhlelo zemfundo ephakeme zifaka isihloko mayelana... Izakhiwo Zedatha kanye nama-Algorithms, ngohlelo olusemthethweni, izimfuneko, izikhathi zethiyori kanye nokuzijwayeza, izivivinyo kanye nemisebenzi, ngoba kubhekwa njengesihloko esiyinhloko sanoma yimuphi unjiniyela wesofthiwe.
Izidingo kanye nezisekelo ezidingekayo
Ukuze uthole okuningi ekutadisheni izakhiwo zedatha kanye nama-algorithms, kuyasiza ukujwayelana nolimi lokuhlela olusetshenziswa ngenhloso evamile, njengokuthi I-Java, i-Python noma i-C++Akudingeki ube yingcweti, kodwa udinga ukukhululeka ngemiqondo eyisisekelo efana neziguquguquko, izinhlobo zedatha, izimo, ama-loop, imisebenzi, kanye nokudluliswa kwamapharamitha.
Kuphinde kusize kakhulu ukuqonda umqondo wokuthi ubunzima be-algorithmic kanye ne-Big O notation: indlela isikhathi sokusebenza noma ukusetshenziswa kwememori okukhula ngayo njengoba usayizi wedatha (n) ukhula. Ukwazi ukuhlukanisa phakathi kwe-O(1), i-O(log n), i-O(n), i-O(n log n), kanye ne-O(n²) kukuvumela ukuthi uqhathanise ezinye izindlela ngokwahlulela okunengqondo futhi uthethelele izinqumo zakho.
Esinye isici esibalulekile ukuthi ube nokulwa okuncane ne- ukuxazulula inkingaIzivivinyo zokuhlela ezihlelekile, izinselele ezincane ze-logic, i-kata elula, njll. Uma uqeqesha "ikhala" lakho ukuhlukanisa inkinga ngezinyathelo, kuzoba lula ukubona ukuthi yisiphi isakhiwo sedatha esifanelana nesimo ngasinye.
Ezinye izifundo zisho ngokusobala izimfuneko noma izimfuneko ezihambisanayo Ngesifundo se-Data Structures and Algorithms, udinga ukuthi uphumelele i-Programming Fundamentals, i-Programming I, noma i-Discrete Mathematics. Lokhu kunengqondo: ngaphandle kwesisekelo esiqinile kuhlelo oluyisisekelo kanye ne-logic ethile, kulula ukukhungatheka ngalesi sihloko.
Okokugcina, ukujwayelana izindawo ezingokoqobo zomhlaba wangempela (njengamaphrojekthi amancane ewebhu, izikripthi, noma izinhlelo zokusebenza zekhonsoli) kukusiza ukuthi ubone kangcono ukuthi uzoyisebenzisela ini isakhiwo ngasinye, esikhundleni sokusibona njengento yezemfundo kuphela.
Izakhiwo zedatha ezisetshenziswa kakhulu
Kusayensi yamakhompyutha kunezakhiwo eziningi zedathaKodwa-ke, kuneqembu lemisebenzi "eyisisekelo" ephindaphindwayo kaninginingi: ama-array (amavektha), ama-stack, ama-queues, uhlu oluxhunyiwe, izihlahla, amagrafu, ama-try, namathebula e-hash. Ukuqonda ukuthi asebenza kanjani, ukuthi yimiphi imisebenzi ayinikezayo, kanye nezindleko zawo ezivamile kuyisihluthulelo sokuhamba kahle ngokuhlela.
Manje sizoya buyekeza ngayinye, nomqondo wayo oyinhloko, imisebenzi ejwayelekile kanye nezibonelo zezinkinga ezivame ukuvela emakilasini, ekuzilolongeni nasezingxoxweni zomsebenzi zabathuthukisi.
Ama-Array
I-array Yisakhiwo sedatha esiqondile esilula kakhulu futhi esinye sezisetshenziswa kakhulu. Siqukethe ibhulokhi yememori ehambisanayo egcina iqoqo lezinto zohlobo olufanayo, ezitholakala nge-integer index, ngokuvamile eqala ku-zero.
Cabanga ngohlu losayizi 4 oluqukethe amanani 1, 2, 3, kanye no-4. Isikhundla ngasinye sino icendice (0, 1, 2, 3) futhi ungafinyelela ngqo noma iyiphi into ngenkomba yayo ngesikhathi esifanayo O(1). Lokhu kwenza ama-array asebenze kahle kakhulu ekufundeni okungahleliwe.
Kunezigaba ezimbili eziyinhloko: ama-array anobukhulu obubodwa (umugqa owodwa wezinto) kanye ama-array amaningi (isibonelo, ama-matrices, angama-arrays ama-array). Izilimi eziningi zokuhlela zinikeza kokubili ukuhlukahluka kwemvelo noma okunomehluko omncane ku-syntax kanye nokusebenza.
Imisebenzi eyisisekelo ku-array ivame ukuba:
- Faka: ukubeka into endaweni ethile, okungase kuhilele ukushintsha ezinye izinto kuma-array angaguquki.
- Thola: ukufinyelela isici ku-index enikeziwe, ngokuvamile i-O(1).
- Susa: susa noma umake njengento engenalutho endaweni ethile, ngokuvamile ngokushintshela izinto kwesobunxele.
- Usayizi: hlola ukuthi zingaki izinto ezigciniwe noma umthamo omkhulu we-array.
Ezingxoxweni nasezivivinyweni, izivivinyo ezinjengalezi zivame kakhulu. thola ubuncane besibili be-arrayUkuthola inombolo ephelele yokuqala engaphindaphindi, ukuhlanganisa ama-array amabili asehleliwe kakade, noma ukuhlela kabusha izinombolo ezinhle nezimbi ngenkathi kugcinwa izakhiwo ezithile. Konke lokhu kuncike ekufinyeleleni kwenkomba kanye nokudlula okuqondile noma okuphindwe kabili.
Izitaki
Ibhethri Kuyisakhiwo sedatha esiqondile esilandela isimiso se-LIFO: Ukungena Kokugcina, Ukuphuma Kokuqala. Cabanga ngenqwaba yezincwadi ezibekwe enye phezu kwenye: ungathatha noma ubeke izincwadi phezulu kuphela.
Lokhu kuziphatha kusho ukuthi Sifinyelela kuphela into ephezu kwesitakiAsikwazi ukususa into ephakathi ngaphandle kokususa izinto ezingaphezulu kwayo kuqala. Lokhu kuyenza ibe isakhiwo esifanele sokwenza amamodeli emilando yezenzo (ukuhlehlisa), izingcingo zomsebenzi ezihlanganisiwe, ukuzulazula (emuva/phambili), njll.
Imisebenzi ejwayelekile ye-stack yile:
- push: faka into entsha phezulu.
- Pop: khipha bese ubuyisela into ephezulu, unciphise usayizi wesitaki.
- Phezulu noma bheka: bheka into ephezulu ngaphandle kokuyisusa.
- Ayinalutho: hlola ukuthi ibhethri alinalutho yini.
Uma kukhulunywa ngezingxoxo, kuvele izinkinga ezifana nalezi ezilandelayo: hlola izinkulumo ku-postfix notation (RPN), ukuhlunga izakhi kusetshenziswa izitaki kuphela, noma ukuhlola ukuthi uchungechunge lwama-parentheses (nezinye izimpawu) lulinganiswe kahle yini kusetshenziswa i-push kanye ne-pop.
Empeleni, ukusetshenziswa kwezilimi eziningi zangaphakathi (isibonelo, isitaki sekholi yesistimu) sisebenza ngokulandela lezi zimiso ezifanayo, yize singaziboni ngqo.
Imigqa
Umsila Kungenye indlela yokwakha idatha eqondile, kodwa esikhundleni sokulandela isimiso se-LIFO, isebenzisa imodeli ye-FIFO: Okokuqala Kungena, Okokuqala Kuphuma. Isifaniso esicacile umugqa wabantu abalinde endaweni yokuthengela amathikithi ebhayisikobho.
Kumugqa ojwayelekile, izakhi zingu Bayanezela ekugcineni bese behoxisa ekuqaleniOfika kuqala, ophakelwa kuqala, okwenza kube kuhle kakhulu ekuphatheni imisebenzi elindile, izinqubo zesistimu yokusebenza, izicelo zeseva, imigqa yokuphrinta, njll.
Imisebenzi eyisisekelo yomugqa ihlanganisa:
- I-Equeue: faka into entsha ekugcineni komugqa.
- Ishidi: susa bese ubuyisela into etholakala ekuqaleni.
- Ngaphambili noma phezulu: bheka into yokuqala ngaphandle kokuyisusa.
- Ayinalutho: hlola ukuthi umugqa awunalutho yini.
Ezinseleleni zokuhlela, kuvamile ukuthi bakubuze, isibonelo, sebenzisa i-stack usebenzisa imigqa emibili, buyisela emuva izakhi zokuqala ze-k zomugqa ngaphandle kokushintsha okusele, noma ukhiqize izinombolo ezimbili kusukela ku-1 kuya ku-n usebenzisa ukuziphatha kwe-FIFO komugqa.
Ngaphandle komsila oyisisekelo, kunezinhlobo ezahlukene ezifana ne- umsila ojikelezayo, umugqa obalulekile noma imigqa emibili (deque), enikeza imisebenzi eyengeziwe futhi ithuthukise ukusebenza ezimweni ezithile.
uhlu oluxhunyiwe
Uhlu oluxhunyiwe Uhlu oluxhunyiwe nalo luyisakhiwo esiqondile, kodwa ngaphakathi luhluke kakhulu kuma-array. Esikhundleni sokusebenzisa ibhulokhi yememori ehambisanayo, lwakhiwe ngama-node angavamile axhunywe komunye nomunye ngezinkomba noma izikhombisi.
I-node ngayinye ivame ukuba nezingxenye ezimbili: imininingwane okumele igcinwe kanye nesikhombisi (noma eziningana) esikhomba i-node elandelayo ngokulandelana (futhi, uma kukhulunywa ngohlu oluxhunywe kabili, kanye nolwangaphambilini). Uhlu luphathwa ngokubhekisela ekhanda lalo, okukhomba i-node yokuqala, futhi ohlwini oluyinkimbinkimbi kakhulu kubhekisela emsileni futhi.
Kunezinhlobo ezimbili eziyinhloko:
- uhlu oluxhunywe olulodwa: i-node ngayinye ikhomba elandelayo kuphela; indlela ivame ukuba sehlangothini olulodwa.
- uhlu oluxhunywe kabiliI-node ngayinye ikhomba i-node elandelayo neyangaphambilini, okwenza kube lula ukuhamba kwe-bidirectional kanye nokusebenza kokususa okuphumelelayo kakhudlwana.
Imisebenzi ejwayelekile ohlwini oluxhunyiwe ifaka:
- I-InsertAtHead: faka i-node entsha ekuqaleni kohlu.
- Faka i-AtEnd: engeza i-node ekugcineni, ubuyekeze umugqa uma ukhona.
- Susa: susa i-node ethile, ulungise izinkomba zama-node angomakhelwane.
- I-DeleteAtHead: susa i-node yokuqala bese uhambisa ikhanda uye kwelilandelayo.
- Ukucinga: dlula ohlwini ufuna inani elithile.
- Ayinalutho: hlola ukuthi ikhanda alisebenzi yini futhi ngenxa yalokho uhlu alunazo izakhi.
Izinkinga ezinjengalezi ziningi emakilasini nasezingxoxweni buyisela emuva uhlu oluxhunyiwe, thola ukuthi kukhona yini umjikelezo (ngokuvamile usebenzisa i-algorithm ethi "tortoise and hare"), thola i-node N ngokubala kusukela ekugcineni, noma ususe ama-node aphindwe kabili, njalo uphatha izikhombisi ngokucophelela.
Uhlu oluxhunyiwe lusetshenziswa kabanzi ukusebenzisa amatafula e-hash ane-chaininguhlu lokusondelana kumagrafu, kanye nezakhiwo zedatha eziguquguqukayo lapho izinto zivame ukufakwa futhi zisuswe khona.
Izihlahla
Isihlahla Kuyisakhiwo sedatha esilandelanayo esakhiwe ngama-node axhunywe ngama-edge. Ngokungafani namagrafu ajwayelekile, umuthi awunazo iziyingi: kuhlale kukhona impande, izingane, abazali, izingane zakubo, amaqabunga, amazinga, kanye nezihlahla ezincane, ezinenhlangano yohlobo "lomndeni" noma "ishadi lenhlangano".
Izihlahla ziwusizo kakhulu uma sifuna imelela ubudlelwano obuphezulu noma uhlukanise inkinga ibe yizinkinga ezincane ezincane: izinhlelo zamafayela, amamenyu, izakhiwo ze-DOM kuziphequluli, izihlahla zezinqumo kubuhlakani bokwenziwa, njll.
Kunezinhlobo eziningi zezihlahla, okuhlanganisa:
- Isihlahla se-N-ary: i-node ngayinye ingaba nenani eliguquguqukayo (futhi mhlawumbe elikhulu) lezingane.
- Isihlahla esilinganiselayo: igcina amagatsha ayo ekujuleni okufanayo ukuze igweme ukwehla kokusebenza.
- Isihlahla se-binary: i-node ngayinye inezingane ezimbili kuphela (kwesobunxele nakwesokudla).
- Isihlahla Sokusesha Esiyi-Binary (BST): umuthi we-binary onesici sokuthi konke ngakwesobunxele se-node kuncane futhi konke ngakwesokunene kukhulu (ngokusho kwenqubo ethile yokuhlela).
- Isihlahla se-AVL, esibomvu-mnyama, 2-3 kanye nezinye izinhloboLezi yizihlahla zokusesha ezilinganiselayo eziqinisekisa imikhawulo emihle yobunzima ekufakweni, ekusulweni, kanye nasemisebenzini yokusesha.
Empeleni, ezivame kakhulu ekuzivocavoceni yizo isihlahla kanambambili futhi i isihlahla sokusesha esinambiliIzinkinga ezivamile zifaka phakathi ukubala ukuphakama kwesihlahla, ukuthola inani eliphakeme le-k-th ku-BST, ukufaka ama-node ohlwini olukude nempande, noma ukuthola okhokho be-node ethile.
Ngaphezu kwalokho, ama-algorithm okuhamba (uku-oda kusengaphambili, ukuhleleka, uku-oda ngemuva, izinga ngezinga) ayisisekelo ezinqubweni eziningi ezilandelayo: ukuphrinta okuhlungiwe, ukuhlolwa kokuvezwa, ukuhlelwa kwesihlahla kanye nokususwa kwe-serialization, njll.
amagrafu
Igrafu Ihlanganisa umqondo wesihlahla ngokuvumela imijikelezo kanye nokuxhumana okuningi okungahleliwe phakathi kwama-node. Iqukethe isethi yama-vertice (ama-node) kanye nesethi yama-edge axhumanisa ama-vertice amabili, ngezinye izikhathi anesisindo noma izindleko ezihambisanayo.
Kunezinhlobo eziningana zamagrafu: engaqondile (imiphetho ayinawo umuzwa wokuqondisa, ubudlelwano bubheke ohlangothini ngalunye) futhi iqondiswe (Imiphetho inesiqalo nendawo lapho iya khona). Ingahlukaniswa futhi ngokuthi inesisindo noma ayinasisindo, ixhunyiwe noma ayixhumekile, inemijikelezo noma ingenayo, njll.
Kukhodi, amagrafu avame ukumelwa ngezindlela ezimbili eziyisisekelo:
- I-matrix yokusondela: i-matrix lapho iseli libonisa ukuthi kukhona yini umkhawulo phakathi kwe-vertex i no-j (futhi mhlawumbe nesisindo soxhumano).
- Uhlu lwezindawo eziseduze: ku-vertex ngayinye kugcinwa uhlu lomakhelwane bayo, okugcina inkumbulo kumagrafu angavamile.
Ama-algorithms okuhamba ajwayelekile kakhulu yilawa Ukusesha kobubanzi bokuqala (i-BFS) futhi i usesho olujulile (i-DFS)Zombili zisetshenziswa njengezisekelo zokwakha izinkinga eziningi: ukuhlola ukuthi igrafu ixhunyiwe yini, ukuthola imijikelezo, ukuthola izingxenye ezixhunyiwe, njll.
Ezivivinyweni zobuchwepheshe, kuvamile ukucelwa ukuthi usebenzise i-BFS ne-DFS, uhlole ukuthi igrafu yakha umuthi yini, ubale inani lemiphetho, noma useshe izindlela ezimfishane phakathi kwama-node amabili (isibonelo, kumephu yamadolobha) kusetshenziswa izinhlobo ezifana ne-Dijkstra noma i-BFS kumagrafu angenasisindo.
Izihlahla ezizamayo noma eziqanjiwe
I-trie (noma i-prefix tree) isakhiwo sedatha esimise okwesihlahla esenzelwe ukuphatha izintambo zezinhlamvu, ikakhulukazi esiwusizo lapho usebenza ngezichazamazwi zamagama, izinhlelo zokuqedela ngokuzenzakalela, noma usesho lwe-prefix.
Ku-trie, i-node ngayinye ivame ukumelela uhlamvu, futhi izindlela ezisuka empandeni ziye kuma-node athile ziphawula amagama apheleleAma-node egama lokugcina avame ukuphawulwa ngandlela thile (isibonelo, ngesibonakaliso se-Boolean) ukuze ahlukaniswe neziqalo ezilula.
Uma sigcina amagama athi “phezulu”, “kanjalo”, kanye “nabo” ngesikhathi esisodwa, sizokwabelana ngengxenye yendlela yokuqala yawo wonke lawo aqala ngezinhlamvu ezifanayo, okuvumela ukusesha kanye neziphakamiso ngesiqalo ku isikhathi esisebenza kahle kakhulu, ngokulingana nobude begama esilifunayo hhayi nenani eliphelele lamagama agciniwe.
Imisebenzi evamile nezinkinga ngokuzama zifaka: bala ukuthi mangaki amagama agciniwe, phrinta wonke amagama ngokulandelana kwezichazamazwi, hlela izakhi ze-array ngokufaka ku-trie, dala amagama asebenzayo avela kusethi yezinhlamvu noma wakhe izakhiwo ezifana nesichazamazwi se-T9.
Ezimweni zengxoxo, akuyona indlela elula kakhulu abazoyicela, kodwa ivela njalo ezinkampanini ezisebenza ne- usesho, ukucubungula amagama, noma izinhlelo zeziphakamiso.
Amatafula e-hash kanye ne-hashing
I-Hashing Kuyindlela yokwabela ukhiye wezinombolo (i-hash) engxenyeni ngayinye yedatha ngendlela eqondile, ukuze sikwazi ukugcina nokubuyisa izakhi cishe ngesikhathi esifanayo, sisebenzisa lowo khiye njengenkomba esakhiweni sangaphakathi, ngokuvamile i-array.
La itafula le-hash Lesi yisakhiwo sedatha esisebenzisa le ndlela yokusebenza. Into ngayinye igcinwa njengepheya yenani lokhiye: ukhiye uguqulwa ube yinkomba yethebula kusetshenziswa umsebenzi we-hash, bese inani (noma ireferensi kuwo) ligcinwa lapho. Kamuva, ukuze useshe, mane u-hash ukhiye futhi bese ufinyelela isikhundla esifanele.
Ukusebenza kwethebula le-hash kuncike kakhulu ezintweni ezintathu: umsebenzi we-hash okhethiwe (kumele usabalalise kahle izihluthulelo ukuze ugweme ukugxilisa ingqondo), usayizi wethebula (usayizi onganele ubangela ukushayisana okuningi) kanye indlela yokuphatha ukungqubuzana (ukuxhumanisa nohlu oluxhunyiwe, ikheli elivulekile, njll.). Lokhu kufana ne- inkomba kusizindalwazilapho ukukhetha isakhiwo esifanele kuthuthukisa usesho kanye nokufinyelela.
Ukuzivocavoca okujwayelekile kokuhlela i-hash kuvame ukudinga, isibonelo, thola amabhangqa alinganayo ku-arrayUkwakha kabusha uhlelo oluphelele lohambo oluvela ezindizeni ngazinye, ukuhlola ngokushesha ukuthi i-array eyodwa iyi-subset yenye, noma ukuqinisekisa ukuthi ama-array amabili awahlangani, konke lokhu ngokusebenzisa usesho olulinganiselwe lwe-O(1) lwethebula le-hash.
Ezilimini eziningi zanamuhla, izakhiwo ezifana imephu, isichazamazwi, imephu ye-hash noma isethi ye-hash Bathembele ngaphakathi kumathebula e-hash, yize isikhombikubona sezinga eliphezulu sinikezwa umhleli wezinhlelo.
Indlela ama-algorithms nezakhiwo zedatha ezihlobene ngayo
Ukukhethwa kwesakhiwo sedatha kunquma ngqo ukuthi yimaphi ama-algorithms anengqondo nokuthi kuzoba yinkimbinkimbi kangakanani. I-algorithm yokusesha eqondile ku- uhlu olungahleliwe Iphindaphinda izakhi ngasinye ngasinye; uma sishintsha isakhiwo sibe umuthi wokusesha olinganiselayo noma ithebula le-hash, sithola izikhathi ezingcono kakhulu.
Isibonelo, uma ufuna ukusesha ngokuphindaphindiwe okhiye eqoqweni elikhulu, ukugcina idatha ku- ithebula le-hash noma isihlahla sokusesha se-binary Ikuvumela ukuthi uklame ama-algorithm okusesha ashesha kakhulu kunanoma usebenzisa uhlu olulula olungahleliwe. Lokhu kusebenza futhi emigqeni yokubeka phambili kanye nama-heap okuhlela noma ama-algorithms endlela emfushane.
Ngakolunye uhlangothi, lapho uklama i-algorithm, uvame ukuqaphela ukuthi udinga izakhiwo ezithile: ukufinyelela kwenkomba, ukufakwa okusheshayo ekuqaleni, ukuzulazula kwe-hierarchical, ukusesha iziqalo, njll. Lokhu kudinga ukuqondisa ukukhetha kwakho isakhiwo. uhlu, izinhlu, izihlahla, amagrafu, amathebula e-hash, ukuzama...
Le nhlanganisela efanele ye-algorithm kanye nesakhiwo sedatha yikona okwenza kube nokwenzeka ukuthi izinhlelo zokusebenza eziyinkimbinkimbi zibe isebenza kahle futhi ingakhuliswaNgaphandle kwesisekelo esihle, izixazululo zivame ukuba zinde, zibe nzima ukuziqonda nokuzinakekela, noma zingenzeki ukuzivumelanisa nezimo njengoba inani lolwazi likhula.
Ngakho-ke, ukuqonda ama-algorithms kanye nezakhiwo zedatha akuyona into ebaluleke kakhulu. imfuneko ecishe ibe yinto ebaluleke kakhulu kunoma ubani ofisa ukuba ngumhleli wezinhlelo onekhono noncintisanayo emakethe yemisebenzi yanamuhla.
Indlela yokufunda izakhiwo zedatha kanye nama-algorithms
Abantu abaningi bazizwa bebambekile lapho bezama ukufunda bodwa ngamapulatifomu afana ne- Ikhodi ye-Leet noma i-CodewarsKuvamile ukuqala ngezivivinyo "ezilula" kodwa ungazi ukuthi uzobhekana kanjani nenkinga, ugcine ubheke ikhambi futhi ungacaci ukuthi uzoliphinda kanjani ngemva kwalokho.
Indlela ewusizo ivame ukuhlanganisa izithako eziningana: a incazelo enhle yemfundiso Isakhiwo ngasinye kanye ne-algorithm kuhlanganisa izibonelo ezibonakalayo, ukuzijwayeza okuningi okuqondiswayo, kanye nokusekelwa kothile onolwazi ukukusiza uthuthukise amakhono akho okuxazulula izinkinga.
Ezweni elikhuluma iSpanishi, kukhona ochwepheshe abanolwazi oluningi abaye baba negalelo ekwenzeni kube lula lokhu kufunda. Isibonelo esisodwa umsebenzi ka Othisha abanolwazi kwezamabhizinisi nezemfundo abashicilele izincwadi nezifundo eziyisisekelo zokuhlela, i-Java, izakhiwo zedatha kanye nezinselele zokuhlela ngemidlalo, okwenza le mibono ifinyeleleke ngendlela ejabulisayo nefanele kumaphrojekthi angempela.
Kuvamile futhi ukuthi izikhungo zemfundo ephakeme kanye nezikhungo zokuqeqesha zifake amamojula athile ezakhiweni zedatha kanye nama-algorithms ngaphakathi kwezinhlelo zazo zabathuthukisi bewebhu noma abahleli bezinhlelo zokusebenza. Ezimweni eziningi, kugcizelelwa indlela ethile. kuyasebenza kakhulu futhi kusekelwe kumaphrojekthi, ngezivivinyo zobunzima obandayo kanye nokulingisa izinkinga ezivamile zengxoxo yobuchwepheshe.
Uma ubambekile, ukulandela indlela ehlelekile kungasiza: qala ngama-array kanye nohlu, ngidlula ezinqwabeni kanye nemigqa, bese kuba yizihlahla kanye namagrafu ayisisekelo, bese kuba amatafula nama-hash tables kanye nama-try, njalo kushintshana incazelo yethiyori, izibonelo zekhodi encane kanye nokuzijwayeza okuningi komuntu ngamunye.
Uma ulungiselela izingxoxo, kungcono ukubuyekeza hhayi nje izakhiwo kodwa futhi i-brute force algorithms kanye nama-algorithm ajwayelekile ahlobene (ukuhamba, ukusesha, ukuhlunga, ukulandelela okulula, ukuhlela okuyisisekelo okuguquguqukayo) futhi uqinisekise ukuthi ungachaza ngokuzwakalayo ukuthi kungani ukhethe isakhiwo esithile nokuthi yini ubunzima besisombululo sakho.
Ngokuhamba kwesikhathi futhi ukungaguquguquki okuthileLokho okubonakala sengathi udonga ekuqaleni kugcina sekuwuqoqo lwamathuluzi ajwayelekile owasebenzisa cishe ngokwemvelo lapho ubhekene nezinkinga ezintsha.
Ukuqonda kahle ukuthi yiziphi izindlela zokwenza izinto, ukuthi izakhiwo zedatha eziyinhloko zisebenza kanjani, nokuthi zihlobene kanjani kuzokuvumela ukuthi ubhale izinhlelo ngokushesha, kucace futhi kuqine kakhudlwanaKuzovula iminyango yakho ezinqubweni zokukhetha ezidingayo futhi kuqinisekiswe ukuthi amaphrojekthi akho, kokubili ezemfundo kanye nawobungcweti, asekelwe esisekelweni esiqinile nekusasa.
Okuqukethwe
- Ziyini izakhiwo zedatha kanye nama-algorithms?
- Kungani zibaluleke kangaka ekuhleleni izinhlelo?
- Izidingo kanye nezisekelo ezidingekayo
- Izakhiwo zedatha ezisetshenziswa kakhulu
- Ama-Array
- Izitaki
- Imigqa
- uhlu oluxhunyiwe
- Izihlahla
- amagrafu
- Izihlahla ezizamayo noma eziqanjiwe
- Amatafula e-hash kanye ne-hashing
- Indlela ama-algorithms nezakhiwo zedatha ezihlobene ngayo
- Indlela yokufunda izakhiwo zedatha kanye nama-algorithms