- Izpratne par to, kas ir datu struktūras un algoritmi, un kā tie apvienojas, ļauj rakstīt efektīvākas un mērogojamākas programmas.
- Masīvu, steku, rindu, saistīto sarakstu, koku, grafiku, mēģinājumu un jaucējtabulu apgūšana ir būtiska profesionālai programmēšanai un tehniskajām intervijām.
- Pareizas datu struktūras un atbilstoša algoritma izvēle tieši ietekmē programmatūras veiktspēju, atmiņas izmantošanu un uzturēšanas iespējas.
- Progresīva mācīšanās ar labu teorētisko pamatu un daudz vadītas prakses ir visefektīvākais veids, kā nostiprināt šos jēdzienus.
Algoritmi un datu struktūras Tie ir divi gabaliņi, kas sader kopā kā puzle: viens izklāsta problēmas risināšanas procedūru, bet otrs nosaka, kur un kā mēs glabājam informāciju. Lai gan tas var izklausīties akadēmiski, šī pāra apgūšana ir tas, kas atšķir kodu, kas vienkārši darbojas, no tāda, kas lido un mērogo, nebojājoties.
Ja vēlaties apgūt profesionālu programmēšanu, sagatavoties tehniskām intervijām vai vienkārši pārtraukt mocīties ar tādiem vingrinājumiem kā LeetCode un Codewars, jums ir nepieciešams stabils pamats. datu struktūras un algoritmiŠajā rakstā jūs redzēsiet, kas tie ir, kāpēc tie ir tik svarīgi, kādi galvenie veidi pastāv, kādas pamatdarbības tie veic un kādi jautājumi parasti parādās eksāmenos un atlases procesos.
Kas ir datu struktūras un algoritmi?
datu struktūra Būtībā tā ir specifiska informācijas organizēšanas un glabāšanas metode atmiņā, lai ar to varētu efektīvi darboties. Šī organizācija nav nejauša: tā tieši nosaka, kuras darbības ir ātras un kuras kļūst dārgas (ievietošana, meklēšana, dzēšana, šķērsošana utt.).
Kad izvēlaties pareizo datu struktūru, jūsu programma var pārvaldīt lielu datu apjomu bez liekas piepūles; ja izvēlaties nepareizi, pat neliela lietojumprogramma var kļūt lēna, patērēt pārāk daudz atmiņas vai laika gaitā kļūt neiespējama tās uzturēšana.
Algoritms Tā ir galīga un sakārtota precīzi definētu soļu secība, kas pārveido ievades datus izvades datos, lai atrisinātu konkrētu problēmu. Tas ir līdzīgi kā ēdiena gatavošanas recepte: tā norāda, kas jādara, kādā secībā un kādos apstākļos, bet neņem vērā to, kā sastāvdaļas tiek uzglabātas ledusskapī, kas būtu datu struktūras daļa.
Datorzinātnēs katrs algoritms tiek izstrādāts, ņemot vērā datu veidu, ar kuru tas strādās. Datu struktūras izvēle nav mazsvarīga detaļa: Struktūra un algoritms iet roku rokāUn nelielas izmaiņas vienā no divām daļām var vai nu uzlabot, vai samazināt veiktspēju.
No teorētiskā viedokļa tādi autori kā Niklauss Virts popularizēja šo ideju jau 70. gs. septiņdesmitajos gados, ka algoritmi + datu struktūras = programmasPēc gadu desmitiem tas joprojām ir tikpat patiesi: nav svarīgi, vai programmējat Java, Python, C++ vai arī esat ieguvis apmācību nometni, intervijās un nopietnos projektos no jums tiks prasīts zināt, kā pareizi izvēlēties un apvienot abus elementus.
Kāpēc tie ir tik svarīgi programmēšanā?
Jebkurā reālās pasaules lietojumprogrammā, lai cik vienkārša tā nešķistu, jūs vienmēr strādājat ar datiem: algas, produkti, lietotāji, darījumi, maršruti, dokumentiŽurnālu ieraksti utt. Jautājums nav par to, vai jūs apstrādāsiet datus, bet gan par to, kā jūs tos organizēsiet, lai jūsu kods būtu ātrs, skaidrs un viegli uzturējams.
Datu struktūras tiek izmantotas, lai informāciju glabātu sakārtotā un saskaņotā veidā atbilstoši problēmai. Ne pats Vienmēr nepieciešams piekļūt pirmajam elementam, meklēt pēc atslēgas, pārvietoties secībā, ievietot vidū vai bieži dzēst; katrs lietošanas modelis labāk atbilst citai struktūrai.
Savukārt algoritmi ļauj efektīvi apstrādāt šos datus: kārtot tos, filtrēt tos, meklēt elementus, atrast optimālus maršrutus, noteikt modeļus ar datu ieguve, optimizēt resursus utt. Daudzas šķietami sarežģītas problēmas kļūst triviālas, kad atrodat pareizo algoritma un datu struktūras kombināciju.
Tehniskajās intervijās programmatūras izstrādes speciālistiem reti tiek uzdoti jautājumi, kas tieši neattiecas uz šīm tēmām. Dažreiz jautājumā ir tieši minēta struktūra, piemēram, "dots binārais koks…", bet citreiz tas ir netieši: "mēs vēlamies saskaitīt, cik grāmatu ir katram autoram", kas liek domāt par jaucējtabula vai atslēgu-vērtību karte.
Turklāt formālā un profesionālā apmācība bieži vien ir saistīta ar šo jomu. Daudzas universitātes un augstākās izglītības programmas ietver priekšmetu par... Datu struktūras un algoritmi, ar oficiālu programmu, priekšnosacījumiem, teorijas un prakses nodarbībām, eksāmeniem un uzdevumiem, jo tas tiek uzskatīts par pamatpriekšmetu jebkuram programmatūras inženierim.
Priekšnosacījumi un nepieciešamie pamati
Lai gūtu maksimālu labumu no datu struktūru un algoritmu izpētes, ir noderīgi pārzināt kādu vispārējas nozīmes programmēšanas valodu, piemēram, Java, Python vai C++Jums nav jābūt guru, taču jums ir jāpārzina pamatjēdzieni, piemēram, mainīgie, datu tipi, nosacījumi, cikli, funkcijas un parametru nodošana.
Tas arī ļoti palīdz izprast ideju par algoritmiskā sarežģītība un Big O notācija: kā izpildes laiks vai atmiņas izmantošana pieaug, palielinoties datu lielumam (n). Zinot, kā atšķirt O(1), O(log n), O(n), O(n log n) un O(n²), jūs varat salīdzināt alternatīvas ar veselo saprātu un pamatot savus lēmumus.
Vēl viens svarīgs aspekts ir neliela cīņa ar problēmu risināšanaStrukturētas programmēšanas vingrinājumi, nelieli loģikas izaicinājumi, vienkāršas kata utt. Jo vairāk trenēsi savu "degunu" sadalīt problēmu soļos, jo vieglāk būs saskatīt, kura datu struktūra atbilst katram gadījumam.
Dažās mācību programmās ir skaidri norādīts priekšnosacījumi vai blakusnosacījumi Lai apmeklētu kursu "Datu struktūras un algoritmi", ir jānokārto "Programmēšanas pamati", "Programmēšana I" vai "Diskrētā matemātika". Tas ir saprotams: bez stabiliem pamatiem programmēšanas pamatos un zināmas loģikas ir viegli justies neapmierinātam ar šo priekšmetu.
Visbeidzot, zināma iepazīšanās ar reālās pasaules praktiskās vides (piemēram, nelieli tīmekļa projekti, skripti vai konsoles lietojumprogrammas) palīdz labāk vizualizēt, kam jūs izmantosiet katru struktūru, nevis uztvert to kā kaut ko tīri akadēmisku.
Visbiežāk izmantotās datu struktūras
Datorzinātnēs ir daudz datu struktūruTomēr pastāv virkne "pamata" funkciju, kas tiek atkārtotas atkal un atkal: masīvi (vektori), steki, rindas, saistītie saraksti, koki, grafiki, mēģinājumi un jaucējtabula. Izpratne par to darbību, piedāvātajām darbībām un to tipiskajām izmaksām ir būtiska, lai programmēšana noritētu gludi.
Tagad mēs ejam pārskatiet katru, ar tās galveno ideju, tipiskām darbībām un problēmu piemēriem, kas parasti rodas izstrādātāju nodarbībās, vingrinājumos un darba intervijās.
Masīvi
Masīvs Tā ir vienkāršākā lineārā datu struktūra un viena no visplašāk izmantotajām. Tā sastāv no nepārtraukta atmiņas bloka, kurā tiek glabāta viena veida elementu kolekcija, kas pieejama ar vesela skaitļa indeksu, parasti sākot no nulles.
Iedomājieties masīvu ar izmēru 4, kas satur vērtības 1, 2, 3 un 4. Katrai pozīcijai ir indekss (0, 1, 2, 3), un jūs varat tieši piekļūt jebkuram elementam ar tā indeksu konstantā laikā O(1). Tas padara masīvus ļoti efektīvus nejaušai lasīšanai.
Ir divas galvenās kategorijas: viendimensiju masīvi (viena elementu rinda) un daudzdimensiju masīvi (piemēram, matricas, kas ir masīvu masīvi). Daudzas programmēšanas valodas piedāvā abus variantus dabiski vai ar nelielām atšķirībām sintaksē un veiktspējā.
Pamata darbības ar masīvu parasti ir:
- Ievietot: elementa novietošana noteiktā pozīcijā, kas statiskos masīvos var ietvert citu elementu pārvietošanu.
- Iegūt: piekļūst elementam noteiktā indeksā, parasti O(1).
- Dzēst: dzēst vai atzīmēt kā tukšu elementu noteiktā pozīcijā, parasti pārbīdot elementus pa kreisi.
- Izmērs: pārbaudiet, cik elementu ir saglabāti vai masīva maksimālo ietilpību.
Intervijās un eksāmenos šādi vingrinājumi ir ļoti izplatīti. Atrodiet masīva otro minimumuPirmā neatkārtojošā vesela skaitļa atrašana, divu jau sakārtotu masīvu apvienošana vai pozitīvu un negatīvu skaitļu pārkārtošana, saglabājot noteiktas īpašības. Tas viss balstās uz piekļuvi indeksam un lineāru vai dubultu šķērsošanu.
Skursteņi
Akumulators Tā ir lineāra datu struktūra, kas atbilst LIFO principam: pēdējais iekšā, pirmais ārā. Iedomājieties grāmatu kaudzi, kas novietota viena virs otras: grāmatas var ņemt vai likt tikai no augšas.
Šī uzvedība nozīmē, ka Mēs piekļūstam tikai tam elementam, kas atrodas kaudzes augšpusē.Mēs nevaram noņemt vidējo elementu, vispirms nenoņemot virs tā esošos elementus. Tas padara to par ideālu struktūru darbību vēstures modelēšanai (atsaukt), ligzdotu funkciju izsaukumiem, navigācijai (atpakaļ/uz priekšu) utt.
Tipiskas steka operācijas ir:
- Push: ievietot jaunu vienumu augšpusē.
- pop: izvilkt un atgriezt elementu augšpusē, samazinot kaudzes izmēru.
- Augšpusē vai ieskatīšanās: skatīt augšējo elementu, to nedzēšot.
- ir tukšs: pārbaudiet, vai akumulators nav tukšs.
Interviju kontekstā tiek novērotas tādas problēmas kā: novērtēt izteiksmes postfix notācijā (RPN), elementu kārtošana, izmantojot tikai stekus, vai iekavu virknes (un citu simbolu) pareizas līdzsvarošanas pārbaude, izmantojot push un pop.
Praksē daudzas valodu iekšējās implementācijas (piemēram, sistēmas izsaukumu steks) darbojas pēc šiem pašiem principiem, pat ja mēs tos tieši neredzam.
Rindas
Aste Tā ir vēl viena lineāra datu struktūra, taču LIFO principa vietā tiek izmantots FIFO modelis: pirmais iekšā, pirmais ārā. Visspilgtākā analoģija ir cilvēku rinda, kas gaida pie kinoteātra biļešu kases.
Standarta rindā elementi ir Viņi pievieno beigās un noņem sākumā“Pirmais brauc, pirmais maļ” principa ievērošana padara to ideāli piemērotu nepabeigtu uzdevumu, operētājsistēmas procesu, servera pieprasījumu, drukas rindu u. c. pārvaldībai.
Pamata rindas darbības ietver:
- Rindā: ievietot jaunu vienumu rindas beigās.
- Atkāpties no rindas: noņemt un atgriezt elementu, kas atrodas sākumā.
- Priekšpuse vai augšpuse: skatīt pirmo vienumu, to nenoņemot.
- ir tukšs: pārbaudiet, vai rinda ir tukša.
Programmēšanas izaicinājumos viņi bieži jautā, piemēram, ieviest steku, izmantojot divas rindas, apgriezt rindas pirmos k elementus vietām, nemainot pārējos, vai ģenerēt bināros skaitļus no 1 līdz n, izmantojot rindas FIFO uzvedību.
Papildus pamata astei ir arī tādas variācijas kā apaļa aste, prioritārā rinda vai dubultās rindas (deque), kas piedāvā papildu darbības un uzlabo veiktspēju noteiktos scenārijos.
saistītie saraksti
Saistītais saraksts Saistīts saraksts arī ir lineāra struktūra, taču iekšēji tas ļoti atšķiras no masīviem. Tā vietā, lai izmantotu nepārtrauktu atmiņas bloku, tas sastāv no retiem mezgliem, kas ir savienoti viens ar otru ar atsaucēm vai rādītājiem.
Katrs mezgls parasti sastāv no divām daļām: datus kas jāuzglabā, un rādītājs (vai vairāki), kas norāda uz nākamo mezglu secībā (un divkārši saistītu sarakstu gadījumā arī uz iepriekšējo). Saraksts tiek pārvaldīts, izmantojot atsauci uz tā sākumu, kas norāda uz pirmo mezglu, un sarežģītākos sarakstos tiek saglabāta arī atsauce uz beigu daļu.
Ir divi galvenie varianti:
- atsevišķi saistīts sarakstskatrs mezgls norāda tikai uz nākamo; ceļš parasti ir vienā virzienā.
- divkārši saistīts sarakstsKatrs mezgls norāda uz nākamo un iepriekšējo mezglu, atvieglojot divvirzienu šķērsošanu un efektīvākas dzēšanas darbības.
Tipiskas darbības ar saistītajiem sarakstiem ietver:
- Ievietot pie galviņas: ievietot jaunu mezglu saraksta sākumā.
- Ievietot beigās: pievienot mezglu beigās, atjauninot rindu, ja tāda pastāv.
- izdzēst: noņemt konkrētu mezglu, pielāgojot blakus esošo mezglu rādītājus.
- Dzēst pie sākuma: izdzēsiet pirmo mezglu un pārvietojiet galviņu uz nākamo.
- Meklēt: pārvietoties pa sarakstu, meklējot noteiktu vērtību.
- ir tukšs: pārbaudiet, vai galvene ir tukša un tāpēc sarakstā nav elementu.
Šādu problēmu ir daudz gan stundās, gan intervijās. apgriezt saistīto sarakstu, noteikt, vai pastāv cikls (parasti izmantojot "bruņurupuča un zaķa" algoritmu), iegūt mezglu N, skaitot no gala, vai noņemt dublētus mezglus, vienmēr uzmanīgi rīkojoties ar rādītājiem.
Saistītie saraksti tiek plaši izmantoti ieviešanai haša tabulas ar ķēdēšanublakus esošo elementu saraksti grafikos un dinamiskās datu struktūras, kurās elementi tiek bieži ievietoti un dzēsti.
Koki
Koks Tā ir hierarhiska datu struktūra, kas sastāv no mezgliem, kas savienoti ar šķautnēm. Atšķirībā no vispārējiem grafiem, kokam nav ciklu: vienmēr ir sakne, bērni, vecāki, brāļi un māsas, lapas, līmeņi un apakškoki ar "ģimenes" vai "organizācijas shēmas" tipa organizāciju.
Koki ir ļoti noderīgi, kad vēlamies attēlo hierarhiskas attiecības vai sadalīt problēmu mazākās apakšproblēmās: failu sistēmas, izvēlnes, DOM struktūras pārlūkprogrammās, lēmumu koki mākslīgajā intelektā utt.
Ir daudz koku šķirņu, tostarp:
- N-ary kokskatram mezglam var būt mainīgs (un, iespējams, liels) bērnu skaits.
- Līdzsvarots koks: uztur savus zarus vienādā dziļumā, lai izvairītos no veiktspējas pasliktināšanās.
- Binārais koks: katram mezglam ir ne vairāk kā divi bērni (kreisais un labais).
- Binārā meklēšanas koks (BST)binārais koks ar īpašību, ka viss pa kreisi no mezgla ir mazāks un viss pa labi ir lielāks (saskaņā ar kādu sakārtošanas kritēriju).
- AVL koks, sarkanmelns, 2-3 un citi variantiTie ir līdzsvaroti meklēšanas koki, kas garantē labus sarežģītības ierobežojumus ievietošanas, dzēšanas un meklēšanas operācijās.
Praksē vingrinājumos visbiežāk sastopamie ir binārais koks un binārā meklēšanas koksTipiskas problēmas ietver koka augstuma aprēķināšanu, k-tās maksimālās vērtības atrašanu BST, mezglu uzskaitīšanu noteiktā attālumā no saknes vai konkrēta mezgla senču noteikšanu.
Turklāt šķērsošanas algoritmi (iepriekšēja secība, iekļaušana secībā, pēcsūtīšana, līmenis pa līmenim) ir būtiski daudziem turpmākiem procesiem: kārtotai drukāšanai, izteiksmju novērtēšanai, koku serializācijai un deserializācijai utt.
grafiki
Grafiks Tas vispārina koka jēdzienu, pieļaujot ciklus un vairākus patvaļīgus savienojumus starp mezgliem. Tas sastāv no virsotņu (mezglu) kopas un šķautņu kopas, kas savieno virsotņu pārus, dažreiz ar saistītu svaru vai izmaksām.
Ir vairāki grafiku veidi: nevirzīts (malām nav virziena sajūtas, attiecības ir divvirzienu) un režisēts (Malām ir sākuma punkts un galamērķis). Tās var arī klasificēt kā svērtas vai nesvērtas, savienotas vai nesavienotas, ar vai bez cikliem utt.
Kodā grafikus parasti attēlo divos pamata veidos:
- Blakus esošo apgabalu matrica: matrica, kurā šūna norāda, vai starp virsotnēm i un j ir šķautne (un, iespējams, savienojuma svaru).
- Blakus esošo teritoriju sarakstskatrai virsotnei tiek saglabāts tās kaimiņu saraksts, kas ietaupa atmiņu retos grafos.
Klasiskākie šķērsošanas algoritmi ir Plašuma meklēšana (BFS) un padziļināta meklēšana (DFS)Abi tiek izmantoti kā pamata elementi daudzām problēmām: grafika savienojamības pārbaudei, ciklu noteikšanai, savienotu komponentu atrašanai utt.
Tehniskajos testos bieži tiek lūgts ieviest BFS un DFS, pārbaudīt, vai grafs veido koku, saskaitīt šķautņu skaitu vai meklēt īsākos ceļus starp diviem mezgliem (piemēram, pilsētu kartē), izmantojot tādus variantus kā Deikstras metode vai BFS nesvērtos grafikos.
Mēģinājumi vai prefiksu koki
Trijstūris (jeb prefiksu koks) ir koka formas datu struktūra, kas optimizēta rakstzīmju virkņu apstrādei, īpaši noderīga, strādājot ar vārdu vārdnīcām, automātiskās pabeigšanas sistēmām vai prefiksu meklēšanu.
Trie gadījumā katrs mezgls parasti attēlo rakstzīmi, un ceļi no saknes līdz noteiktiem mezgliem iezīmē pilni vārdiPēdējā vārda mezgli parasti tiek kaut kādā veidā atzīmēti (piemēram, ar Būla indikatoru), lai tos atšķirtu no vienkāršiem prefiksiem.
Ja vārdus “top”, “thus” un “their” saglabāsim trie vienībā, mēs daļu no sākotnējā ceļa koplietosim visiem tiem vārdiem, kas sākas ar vienādiem burtiem, ļaujot meklēt un ieteikt pēc prefiksa. ļoti efektīvs laiks, proporcionāli meklējamā vārda garumam, nevis kopējam saglabāto vārdu skaitam.
Bieži sastopamas darbības un problēmas ar mēģinājumiem ietver: saskaitiet, cik vārdu ir saglabāti, izdrukāt visus vārdus leksikogrāfiskā secībā, kārtot masīva elementus, ievietojot tos trie, ģenerēt derīgus vārdus no burtu kopas vai veidot struktūras, kas līdzīgas T9 vārdnīcai.
Interviju kontekstā tā nav pati vienkāršākā struktūra, ko viņi pieprasīs, taču tā regulāri parādās uzņēmumos, kas strādā ar meklēšana, teksta apstrāde vai ieteikumu sistēmas.
Heša tabulas un hešings
Hašēšana Tā ir metode, lai katram datu elementam deterministiskā veidā piešķirtu skaitlisku atslēgu (hešu), lai mēs varētu saglabāt un izgūt elementus gandrīz nemainīgā laikā, izmantojot šo atslēgu kā indeksu iekšējā struktūrā, parasti masīvā.
La hash tabula Šī ir datu struktūra, kas izmanto šo mehānismu. Katrs elements tiek glabāts kā atslēgas-vērtības pāris: atslēga tiek pārveidota par tabulas indeksu, izmantojot jaucējfunkciju, un vērtība (vai atsauce uz to) tiek tur glabāta. Vēlāk, lai meklētu, vienkārši vēlreiz jauciet atslēgu un piekļūstiet atbilstošajai pozīcijai.
Haša tabulas veiktspēja ir būtiski atkarīga no trim faktoriem: jaucējfunkcija izvēlēts (atslēgas ir jāizdala labi, lai izvairītos no koncentrēšanās), galda izmērs (nepietiekams izmērs izraisa daudzas sadursmes) un sadursmju pārvaldības metode (saistīšana ar saistītajiem sarakstiem, atvērta adresēšana utt.). Tas ir līdzīgi kā indekss datubāzēkur atbilstošas struktūras izvēle uzlabo meklēšanu un piekļuvi.
Tipiski heša programmēšanas vingrinājumi bieži vien prasa, piemēram, Atrodiet simetriskus pārus masīvāPilna ceļojuma maršruta rekonstrukcija no atsevišķiem lidojumiem, ātra pārbaude, vai viens masīvs ir otra apakškopa, vai divu masīvu nesavienotības pārbaude, izmantojot aptuvenās O(1) meklēšanas heša tabulā.
Vairumā mūsdienu valodu ir tādas struktūras kā karte, vārdnīca, jaucējkarte vai jaucējkopa Tie iekšēji paļaujas uz haša tabulām, lai gan programmētājam tiek piedāvāta augsta līmeņa saskarne.
Kā algoritmi un datu struktūras ir saistītas
Datu struktūras izvēle tieši nosaka, kuri algoritmi ir jēgpilni un kāda būs to sarežģītība. Lineārs meklēšanas algoritms uz a nesakārtots saraksts Tas atkārto elementus pa vienam; ja mainām struktūru uz līdzsvarotu meklēšanas koku vai jaucējtabulu, iegūstam daudz labākus laikus.
Piemēram, ja vēlaties atkārtoti meklēt atslēgas lielā kolekcijā, datu glabāšana jaucējtabula vai binārā meklēšanas koks Tas ļauj izstrādāt meklēšanas algoritmus, kas ir daudz ātrāki nekā tad, ja izmantotu vienkāršu nešķirotu masīvu. Tas pats attiecas uz prioritāšu rindām un kaudzēm plānošanai vai īsākā ceļa algoritmiem.
Un otrādi, izstrādājot algoritmu, bieži vien rodas nepieciešamība pēc noteiktām īpašībām: piekļuves indeksam, ātras ievietošanas sākumā, hierarhiskas šķērsošanas, prefiksu meklēšanas utt. Šīs vajadzības nosaka struktūras izvēli. masīvi, saraksti, koki, grafiki, jaucējtabula, mēģinājumi...
Šī atbilstošā algoritma un datu struktūras kombinācija ļauj izveidot sarežģītas lietojumprogrammas. efektīvs un mērogojamsBez laba pamata risinājumi mēdz kļūt lēni, grūti saprotami un uzturējami vai neiespējami pielāgojami, pieaugot informācijas apjomam.
Tāpēc algoritmu un datu struktūru apgūšana nav gandrīz neaizstājama prasība ikvienam, kurš vēlas kļūt par kompetentu un konkurētspējīgu programmētāju mūsdienu darba tirgū.
Kā apgūt datu struktūras un algoritmus
Daudzi cilvēki jūtas iestrēguši, mēģinot mācīties paši, izmantojot tādas platformas kā LeetCode vai CodewarsBieži vien sākumā ir "viegli" vingrinājumi, bet joprojām nav zināms, kur vērsties pie problēmas, un galu galā tiek meklēts risinājums, taču nav skaidrs, kā to vēlāk atkārtot.
Praktiska pieeja parasti apvieno vairākas sastāvdaļas: a labs teorētisks skaidrojums Katra struktūra un algoritms ietver vizuālus piemērus, daudz vadītas prakses un, ja iespējams, atbalstu no pieredzējuša cilvēka, lai palīdzētu jums pilnveidot problēmu risināšanas prasmes.
Spāņu valodā runājošajā pasaulē ir profesionāļi ar plašu pieredzi, kas ir devuši ieguldījumu šīs mācīšanās veicināšanā. Viens piemērs ir darbs, ko veic Skolotāji ar pieredzi uzņēmējdarbībā un izglītībā kuri ir publicējuši grāmatas un kursus par programmēšanas pamatiem, Java, datu struktūrām un programmēšanas izaicinājumiem ar spēlēm, padarot šos konceptus pieejamus jautrā un reālos projektos piemērojamā veidā.
Akadēmijām un apmācību centriem ir ierasts savās tīmekļa izstrādātāju vai lietojumprogrammu programmētāju programmās iekļaut arī īpašus moduļus par datu struktūrām un algoritmiem. Daudzos gadījumos tiek uzsvērta konkrēta pieeja. ļoti praktiski un uz projektiem balstīti, ar arvien grūtākiem vingrinājumiem un tipisku tehnisku interviju problēmu simulāciju.
Ja esat iestrēdzis, strukturēta maršruta ievērošana var palīdzēt: sāciet ar masīviem un sarakstiem, izejot cauri stekiem un rindām, tad kokiem un vienkāršiem grafiem un visbeidzot jaucējtabulām un mēģinājumiem, vienmēr pārmaiņus ar teorētiskiem skaidrojumiem, nelieliem koda piemēriem un daudz individuālu vingrinājumu.
Gatavojoties intervijai, ieteicams pārskatīt ne tikai struktūras, bet arī brutāla spēka algoritmi un ar tiem saistītajiem klasiskajiem algoritmiem (šķērsošana, meklēšana, kārtošana, vienkārša atpakaļizsekošana, pamata dinamiskā programmēšana) un pārliecinieties, ka varat skaļi izskaidrot, kāpēc esat izvēlējies konkrētu struktūru un ko tā jūsu risinājuma sarežģītība.
Laika gaitā un zināma konsekvenceTas, kas sākumā šķiet kā siena, galu galā kļūst par pazīstamu instrumentu kopumu, ko gandrīz instinktīvi izmanto, saskaroties ar jaunām problēmām.
Laba izpratne par to, kas ir algoritmi, kā darbojas galvenās datu struktūras un kā tās ir saistītas viena ar otru, ļaus jums rakstīt programmas. ātrāk, skaidrāk un izturīgākTas pavērs jums durvis prasīgos atlases procesos un nodrošinās, ka jūsu projekti, gan akadēmiskie, gan profesionālie, ir balstīti uz stabila pamata ar nākotni.