Doug LLOYD: Allura CS50, konna koperti ħafna strutturi differenti ta 'data, id-dritt? Imxejna arrays jidher, u marbuta listi, u tabelli hash, u tipprova, stacks u kjuwijiet. Aħna ser wkoll jitgħallmu ftit dwar siġar u munzelli, imma verament dawn kollha biss jispiċċaw biex tkun varjazzjonijiet fuq tema. Hemm verament huma dawn tip ta 'erba' ideat bażiċi li kollox jista jsarrafx biss fl. Arrays, listi marbuta, tabelli hash, u tipprova. U bħal I said, hemm varjazzjonijiet fuqhom, iżda dan huwa pjuttost ħafna se tqassar kollox aħna qed tmur biex jitkellmu dwar f'din il-klassi f'termini ta 'C. Imma kif dawn kollha miżura up, right? Imxejna tkellem dwar il-vantaġġi u liżvantaġġi ta 'kull wieħed fil videos separati fuqhom, imma hemm ħafna ta 'numri jkollna jintefa 'madwar. Hemm ħafna ta 'ġenerali ħsibijiet jkollna jintefa 'madwar. Ejja nippruvaw u jikkonsolida hija f'waħda biss post. Ejja jintiżnu l-vantaġġi kontra l-iżvantaġġi, u jikkunsidraw li istruttura tad-data jista 'jkun id-data lemin struttura għal sitwazzjoni partikolari tiegħek, kwalunkwe tip ta 'data li qed ħażna. Inti ma neċessarjament dejjem jeħtieġ li uża l-inserzjoni super fast, tħassir, u lookup ta 'trie jekk int verament ma jimpurtahom dwar tiddaħħal u tħassar iżżejjed. Jekk għandek bżonn biss malajr każwali aċċess, forsi firxa hija aħjar. Mela ejja jiddistillaw dan. Ejja nitkellmu dwar kull wieħed mill-erba ' tipi ewlenin ta 'strutturi ta' dejta li konna tkellimna dwar, u biss tara meta jista 'jkun tajjeb, u meta huma jistgħu ma jkunux daqshekk tajjeb. Mela ejja nibdew mal arrays. Allura inserzjoni, li tip ta 'bad. Inserzjoni fit-tmiem ta 'firxa hija OK, jekk aħna qed tinbena firxa kif immorru. Imma jekk irridu li daħħal elementi fis-nofs, think lura għall-inseriment sort, hemm ħafna ta 'ċaqliq li jitwaħħal element fil hemmhekk. U hekk jekk aħna qed tmur biex tiddaħħal kullimkien iżda l-aħħar ta 'firxa, li probabbilment mhux daqshekk kbir. Bl-istess mod, it-tħassir, sakemm aħna qed tħassar mit-tmiem ta 'firxa, huwa probabbilment wkoll mhux hekk kbir jekk ma rridux li jħallu lakuni vojta, li normalment aħna ma. Aħna tixtieq li tneħħi element, u imbagħad tip ta jagħmilha snug mill-ġdid. U hekk tħassir elementi mill firxa, ukoll mhux hekk kbir. Lookup, għalkemm, hija kbira. Ikollna aċċess bl-addoċċ, lookup ħin kostanti. Aħna biss jgħidu seba ', u immorru li array rilokazzjoni sebgħa. Aħna ngħidu 20, bil mur rilokazzjoni firxa 20. Aħna ma jkollhom jtenni madwar. Li pjuttost tajba. Arrays huma wkoll relattivament faċli biex issolvi. Kull darba tkellimna dwar xi għażla algoritmu, bħal sort għażla, sort inserzjoni, sort bużżieqa, jingħaqdu sort, aħna dejjem użati arrays biex tagħmel dan, minħabba arrays huma pjuttost faċli biex sort, relattiva għall-istrutturi tad-data Rajna s'issa. Huma qed wkoll relattivament żgħar. Hemm ma ħafna spazju żejjed. Inti biss imwarrba eżattament kemm kif għandek bżonn li jżommu d-data tiegħek, u li pjuttost ħafna dan. Allura dawn qed pretty żgħar u effiċjenti b'dan il-mod. Iżda tnaqqis ieħor, għalkemm, hija li huma ffissati fid-daqs. Irridu tiddikjara eżattament kif big irridu firxa tagħna li tkun, u aħna biss jiksbu sparatura waħda fiha. Aħna ma tista 'tikber u tiċkien dan. Jekk għandna bżonn li jikbru jew tiċkien dan, aħna jeħtieġ li jiddikjara firxa kompletament ġdid, kopja kollha tal-elementi tal- ewwel array fit-tieni firxa. U jekk aħna kkalkulat b'mod żbaljat li ħin, għandna bżonn li jagħmlu mill-ġdid. Mhux hekk kbir. Allura arrays ma tagħtina l-flessibilità li jkollhom numri varjabbli ta 'elementi. Ma 'lista marbuta, inserzjoni huwa pjuttost faċli. Aħna biss tindi fuq il-front. Tħassir huwa wkoll pjuttost faċli. Irridu nsibu l-elementi. Li jinvolvu xi tiftix. Imma ladarba inti ħadthom misjuba l-element inti qed tfittex, kull ma għandek bżonn tagħmel hija bidla pointer, possibilment tnejn jekk għandek a marbut list-- a doppjament lista marbuta, rather-- u allura inti tista 'sempliċement ħielsa l node. Inti ma għandekx shift kollox madwar. Inti biss bidla żewġ pointers, b'tali mod li pretty malajr. Lookup huwa ħażin għalkemm, id-dritt? Sabiex għalina biex isibu element f'lista marbuta, kemm jekk waħedhom jew doppjament marbuta, irridu lineari tfittxija lilha. Irridu tibda fil-bidu u jċaqalqu l-aħħar, jew jibda fl-aħħar mixja għall-bidu. Aħna ma jkollhom aċċess bl-addoċċ aktar. Allura jekk aħna qed tagħmel Ħafna tiftix, forsi lista marbut ma tkunx daqstant tajba għalina. Huma qed wkoll verament diffiċli biex issolvi, id-dritt? L-uniku mod inti tista ' verament issolvi lista marbuta huwa li sort dan kif inti tibni dan. Imma jekk inti sort kif inti jibniha, int ma jibqax jagħmlu inserzjonijiet malajr aktar. Int mhux biss klassifikazzjoni hija stabbilita affarijiet fuq il-front. Int għandek issib l- post dritt li tqiegħed lilha, u mbagħad inserzjoni tiegħek isir biss dwar kif bad bħala ddaħħal fis firxa. Allura listi konness m'humiex hekk kbir għall-għażla tad-data. Huma wkoll qed pretty żgħar, ta 'daqs għaqli. Doppjament lista marbuta ftit akbar minn listi marbuta waħdu, li huma kemmxejn akbar minn arrays, iżda mhux ammont kbir ta 'spazju moħli. Mela jekk l-ispazju huwa bi premium, iżda mhux premium verament intensa, dan jista 'jkun il-mod id-dritt li jmorru. Tabelli hash. Inserzjoni fis-tabella hash huwa pjuttost sempliċi. Huwa proċess b'żewġ stadji. L-ewwel għandna bżonn biex imexxu data tagħna permezz funzjoni hash biex tikseb kodiċi hash, u allura aħna daħħal l-element fil- tabella hash f'dak il-post kodiċi hash. Tħassir, simili għal-lista marbuta, huwa faċli ladarba inti ssib l-element. Int għandek issib l-ewwel, iżda mbagħad meta inti iħassarha, inti biss jeħtieġ li jiskambjaw ftit pointers, jekk inti qed tuża chaining separata. Jekk inti qed tuża probing, jew jekk int ma użu ikkatenar fil-livelli kollha fit-tabella hash tiegħek, tħassir huwa attwalment verament faċli. Kull ma trid tagħmel hu li hash l data, u mbagħad mur f'dak il-post. U jekk wieħed jassumi inti ma xi ħabtiet, inti ser tkun tista 'tħassar malajr ħafna. Issa, Lookup huwa fejn affarijiet jiksbu ftit aktar kumplikata. Huwa fuq medja aħjar minn listi marbuta. Jekk inti qed tuża chaining, inti xorta jkollhom lista marbuta, li jfisser li inti għad għandek l- tfittxija detriment lista marbuta. Imma għaliex inti qed tieħu marbuta tiegħek lista u qsim dan matul 100 jew 1000 jew n elementi fit-tabella hash tiegħek, int listi marbuta huma kollha wieħed nth-daqs. Huma qed kollha sostanzjalment iżgħar. Inti għandek n listi marbuta minflok tal-lista wieħed marbut mid-daqs n. U hekk dan-dinja reali kostanti fattur, li aħna ġeneralment ma nitkellmux dwar fil-kumplessità ħin, ma attwalment tagħmel differenza hawn. Allura lookup għadu lineari tfittxija jekk inti qed tuża chaining, iżda t-tul tal-lista int tiftix permezz huwa ħafna, qasir ħafna meta mqabbla. Għal darb'oħra, jekk issortjar hija tiegħek għan hawnhekk, tabella hash tal probabbilment mhux il-mod id-dritt li jmorru. Just jużaw firxa jekk issortjar huwa verament importanti għalik. U jistgħu jiddekorri l-iskala tad-daqs. Huwa diffiċli li wieħed jgħid jekk tabella hash huwa żgħir jew kbir, għaliex huwa verament jiddependi fuq kif kbar tabella hash tiegħek. Jekk int biss ser tkun ħażna ħames elementi fit-tabella hash tiegħek, u inti għandek tabella hash ma 10,000 elementi fiha, int probabilment wasting ħafna spazju. Kuntrast tkun tista 'wkoll jkollhom tabelli hash kompatti ħafna, iżda l-iżgħar tabella hash tiegħek gets, l-itwal kull wieħed minn dawk il-listi marbuta jiġrilha. U hekk hemm verament ebda mod biex jiddefinixxu eżattament id-daqs ta 'tabella hash, iżda huwa probabbilment sikur li jgħidu huwa ġeneralment se tkun akbar minn marbut lista ħażna tal-istess data, iżda iżgħar minn trie. U jipprova huma r-raba ' ta 'dawn l-istrutturi li aħna kont qed jitkellem dwar. Ddaħħal fi trie huwa kumpless. Hemm ħafna ta 'dinamika allokazzjoni memorja, speċjalment fil-bidu, kif int tibda biex jibnu. Iżda wasal iż-żmien kostanti. Huwa biss l-element uman hawnhekk li jagħmilha diffiċli. Wara li jiltaqgħu pointer null, malloc ispazju, jmorru hemm, spazju possibilment malloc minn hemm mill-ġdid. T-tip ta 'fattur intimidazzjoni ta' pointers fl-allokazzjoni tas memorja dinamika huwa l-ostaklu ċar. Imma ladarba inti stajt kklerjat dan, inserzjoni attwalment ġej pjuttost sempliċi, u ċertament huwa żmien kostanti. Tħassir huwa faċli. Kull ma trid tagħmel hu li jinnaviga jistabbilixxi Koppja ta 'pointers u mingħajr l-node, b'tali mod li pretty tajba. Lookup huwa wkoll pretty fast. Huwa bbażat biss fuq il- tul tad-data tiegħek. Mela jekk kollha tad-data tiegħek huwa ħames sekwenzi ta 'karattri, per eżempju, int ħażna ħamsa Sekwenzi ta 'karattri fil trie tiegħek, hija tieħu biss ħames passi għall issib dak li qed tfittex. Ta 'ħames huwa biss fattur kostanti, hekk għal darb'oħra, inserzjoni, tħassir, u Lookup hawn huma kollha ħin kostanti, effettiv. Ħaġa oħra hija li trie tiegħek huwa fil-fatt tip ta 'diġà magħżula, right? Bis-saħħa ta 'kif aħna qed Elementi ddaħħal, permezz ta 'ittra tmur permezz ta' ittra tal- ewlenin, jew żewġ ċifri biss minn ċifri tas-ewlenin, tipikament, trie tiegħek jispiċċa jkun tip ta 'magħżula kif inti tibni dan. Hija ma verament jagħmel sens li wieħed jaħseb dwar issortjar bl-istess mod kif naħsbu dwar bl arrays, jew listi marbuta, jew tabelli hash. Iżda f'xi sens, tiegħek trie huwa magħżul kif tmur. L-tnaqqis, naturalment, huwa li a trie isir malajr enormi. Minn kull punt junction, inti tista have-- jekk ċavetta tiegħek jikkonsisti numri, għandek 10 oħra postijiet inti tista 'tmur, li ifisser li kull node fih informazzjoni dwar id-data inti tixtieq li taħżen f'dak node, plus 10 pointers. Li, fuq IDE CS50, huwa 80 bytes. Allura huwa mill-inqas 80 bytes għal kull node li inti toħloq, u li mhux ma jingħaddu magħhom data. U jekk lymph tiegħek huma ittri minflok numri, issa għandek 26 pointers minn kull post. U 26 darba 8 huwa probabbilment 200 bytes, jew xi ħaġa bħal dik. U inti għandek kapital u lowercase-- inti tista tara fejn jien jmorru ma 'dan, id-dritt? Lymph tiegħek tista 'jiksbu verament kbar, u għalhekk il-trie innifsu, b'mod ġenerali, jista jiksbu verament kbir, wisq. Mela jekk ispazju huwa bi għolja premium fis-sistema tiegħek, a trie jista 'ma jkunx il-mod id-dritt li imorru, għalkemm benefiċċji oħra tagħha jidħlu fis-seħħ. Jien Doug Lloyd. Dan huwa CS50.