DAVID Malan: Bone. Do ĉi tiu estas CS50, kaj ĉi tiu estas Nun la komenco de la semajno tri. Do ĝis nun, ni verkis programojn en C aspektas iom iu kiel ĉi tie. Do ni hvas kelkaj akra inkluzivas je la supro. Ni havas int, ĉefa, dezerta, kaj tiam ion fari en la mezo, kelkaj iom da kodo interne de tiu funkcio. Sed ŝlosilo estis la fakto, ke ni estis dirante malplenon tie. Do malplenon, ĉiuj ĉi tempo, specifas ke tiu programo, kiam kuri, nur povas kuri tra lia nomo. Vi ne povas tajpi neniun Alivorte aŭ numeroj post la programo nomo kiam kurante ĝin. Do, ekzemple, se la programo estis kompilita en dosiero nomita saluton, Vi povus fari ./hello, sed tio estas. La sola maniero kiun vi povis havigi enigo al tiu programo Estas nomante funkcio. Ekzemple, kio funkcio ni estis uzante ĝis nun akiri eniron de la uzanto? Publiko: Get kordo. DAVID Malan: Por akiri ŝnuro, aŭ akiri int, aŭ vi vidis aliajn, eĉ se vi ne uzas ilin ankoraŭ, kiel akiri longan, longan kaj similaj. Sed supozu, ke ni fakte volas komenci skribo programoj kiuj estas iom pli versátil, kaj, sincere, iom pli kiel la komandojn kiujn vi havas estis atingi, espereble, iom Kutimi. Kiel cd spaco Dropbox. Tiu, kompreneble, ŝanĝoj via dosierujo, supozante vi estas en John Harvard hejmo dosierujo, al via Dropbox dosierujo. Dume, jenan ordonon kreas novan dosierujon nomita pset2, kiel vi eble jam aŭ baldaŭ por problemo starigis du. Faru Saluton, kompreneble, estas komando kiuj konstruas programo nomata saluton el dosiero nomata saluton dot c. Kaj en ĉiu el tiuj kazoj, nun, ni devis provizi argumenton sur la tn komandlinio, la palpebrumantaj prompto, tiel ke make scias kion konstrui, ktp ke mkdir scias kion dosierujo krei, kaj tial cd scias kie vi deziras iri. Sed ĝis nun, ni observu dirante ke ĉefa, vian defaŭltan funkcio, havas malplenon esprimo ene de tiuj krampoj, kio signifas ke ne povas preni ajnan argumentoj. Do ekde hodiaŭ, kion ni faros estas, ni tuj komencos subteni aĵojn kiel ĉi vespero. Fakte, en tiu kazo, kion vi ne tipe permane tajpi, Faru estis farante ĉi por ni, estas ne krom unu, du, tri pliaj kordoj post la programo nomata tin. Do kiel ni sukcesos tion? Nu, ekde hodiaŭ, en kazoj kie ni volas havigi enigo per la tn komandlinio, Ni tuj komenci aldonante jen kio estas en yellow-- anstataŭante malplenon kun int argc komo kordo argv malferma krampo proksime krampo. Nun tiu estas interesa por kelkaj kialoj. Unu, ĝi tuj ni skribi programoj kiuj estas iom pli dinamika. Sed, pli compellingly, ĝi tuj malfermi nun konversacion pri kio arrays povas vere esti uzita, kia kordo vere estas sub la kapuĉo, ĝis la proksima semajno, kiam ni komencos subnaĝado en eĉ pli profunde, kiamaniere la maŝino estas fari ĉion ĉi laboro. Sed nuntempe, ni desegni, eble, foton. Kiam vi skribas programon kun ĉefaj deklaris tiamaniere, tiel ke ĉefa prenas du argumentojn, la int kaj- kio datumtipo Estas la dua argumento? Publiko: Array. DAVID Malan: Array. Tiel ĝi aspektas unuavide kiel ĝi estas kordo, sed rimarki la kvadrataj krampoj. Memori lastan tempon ni enkondukis la nocio de tabelo. Kaj arrays uzi kvadrataj krampoj en kelkaj kuntekstoj. Vi povus uzi la kvadrato krampoj iri en tabelo kaj akiri apartan elementon, kiel krampo 0 aŭ krampo 1 aŭ krampo 2. Sed ni vidis, se mallonge, pasintsemajne ke vi ankaŭ uzi tiujn kvadrataj krampoj por deklari la grandecon de tabelo, se vi scias anticipe kiom ints aŭ kiom da ŝnuroj aŭ kion ajn vi fakte volas. Do rezultas tie estas tria kuntekston tie kiu ne havas numeron interne el la kvadrataj krampoj. Kiam vi specifas, kiel mi havas ĉi tie, la nomo de iu kiel argv, kio estas nur ornama metodo dirante argumento vektoro, kiu Estas alia ornama metodo dirante tabelo de argumentoj, malferma krampo proksime krampo simple signifas ke vi ne bezone scii anticipe kiom granda la tabelo tuj estos, sed vi scias ĝi tuj estos tabelo. Do se vi ne konas la nombro ne metis ĝin tien, por malferma krampo proksime krampo signifas ke argv estas cxeno, sed tabelo de kordoj. Do sintakse, se vi pensas reen pasintsemajne, ĝi estas tre simila al diri ion kiel int aĝoj malferma krampo, kaj tiam ion poste. Do kion signifas tio aspektas kiel? Ni fakte desegni bildon. Do kiam vi kuros ĉi programo kun Main esti du argumentoj difinitaj interne de tiuj krampoj, vi esence havi almenaŭ du pecoj de memoro enmanigis al vi sub la kapuĉo. Unu, kiel mi nomas kiel tiu rektangulo, tuj nomos argc. Kaj ĝuste kiel rapida recap, kio estas la datumtipo de argc? Do ĝi estas int. Do nombro tuj iri argc-- turnoj el kiu elstaras por argumento grafo. Dume, mi desegnis argv kiel tabelo. Kaj mi ne vere scias kiom longe tuj estos, tiel por la hodiaŭa celoj dot dot dot. Ĝi povus ricevi de iu longo. Sed mi bildigis ĉi tie almenaŭ kvar rektangulojn. Do argv eron de memoro kiu stokas kordo kordo kordo dot dot dot, kaj argc estas nur unu eron de memoro por entjero. Do nun, ni estu iom pli preciza. Se, kiam mi havas kordoj en tiu tabelo, nomita argv, mi volas ricevi ilin individue, kiel pasintsemajne, Ni tuj uzos skribmaniero kiel argv krampo 0 akiri la unuan aferon tabelo. Argv krampo 1 akiri la duan aferon, kaj tiel plu. La ŝlosilo tie estas ni ankoraŭ 0 indexed-- ni ankoraŭ rakonti de 0. Do nun ni reale meti ion en ĉi tio. Se mi estus kompili programon nomata saluton el dosiero nomata saluton dot c, kaj tiam mi kuris ke programo kun skalara slash saluton, kion faras mia komputilo, miaj portebla, aspektas kiel sub la kapuĉo Dume mi kuros dot slash saluton kaj batis Entajpu? Nu, tio eble estas kion ni povus priskribi kiel la enhavo de via komputilo memoron, aŭ RAM-- Hazarda Access Memory. En aliaj vortoj, la komputilon, iel vi magie, metas la numeron 1 en argc, AKA argcount, kaj ĝi metas laŭvorte la kordo ./hello en argv krampo 0. Mi havas neniun ideon, sincere, kio estas en argv krampo 1 aŭ 2 aŭ 3, ĉar se la uzanto ne havas tajpis ion krom ./hello, Ni tuj supozas, ke tiuj Estas plej verŝajne rubo valoroj por tiel diri. Tiuj blokoj de memoro ekzistas, sed ne estas al ni rigardi ilin, ĉar la argcount estas nur unu. Nun, dume, se mi skribi kuri alia programo, cd, kiu estas pli propre komando, en via palpebrumante prompt-- cd spaco Dropbox-- kiam mi kuris ke, efektive, kiam la cd programo kuras, argc, interne de mia komputilo memoro, estas por la plej briefest dua la nombro 2. Kaj tiam argv krampo o havas cd, argv krampo 1 havas Dropbox, kaj tiam kompreneble la komando kompleta, tial ĉiuj ĉi memoro esence iras kaj estas uzata por io alia. Kaj tio estas kial mi diras nur split dua. Dume, se ni faras mkdir pset2, la bildo aspektas preskaŭ la sama, sed kun malsamaj ĉenoj ene argv. Se mi faras tin haltostreko saluton saluton dot c, sama ideo. Pli ŝtofo estas plenigitaj por argv kaj argc, kompreneble, estas 4. Do alivorte, kvankam tiu tabelo eble dot dot dot, de iu ŝanĝiĝema longitudo, por tiel diri, vi ĉiam scias kie la fino de ĝi Estas, ĉar argc tuj rakontos vin en kio punkto vi devas halti rigardas elementoj en argv. Vi povas nur rigardi kvar entute en tiu kazo. Do ni nun rigardu, eble, simpla programo. Oni kiu ĵus diras saluton al iu kiel Zamyla. Do mi asertas mi verkos programon en nur momento tra kiu mi povus fari ./hello spaco Zamyla, kaj tiam mi volas mia programo por printi ion súper simpla kiel "saluton, Zamyla." Nun en la pasinteco ni uzis getstring. Do, en la pasinteco, eĉ se vi estas nova al programado, _odds_ estas vi povis vipi supre Programo kiu uzas getstring kaj tiam uzas printf por saluti al Zamyla. Sed ni ne uzas getstring tiu tempo. Lasu min anstataŭ iri en la Appliant kaj ili inkludas normon mi ho dot h. Permesu al mi ankaŭ inkludas CS50 dot h. Nun int ĉefa, kaj nun mi estas Ne tuj faros malplenon hodiaŭ. Anstataŭe, mi faros int argc kordo argv malferma krampo proksime krampo, ne specifante numero. Kaj nun jen estas mia tn fari. Kion mi faros nun estas, mi estas faros iom de salto de fido Mi tuj supozus ke la uzanto tuj uzos tiun programon korekte, kaj mi simple tuj fari printf saluton,% sn. Do nenio nova tie. Sed mi volas nun meti ajn vorto la uzanto tipoj post la programo nomo. Do se mi faras ./hello spaco Zamyla mi volas iel programmatically aliro citi unquote "Zamyla." tial mi povas eniri en mian argumenton vektoro, mia tabelo de kordoj, kaj se la komando, denove estis ./hello spaco Zamyla, kio numero mi volas meti en argv tie? Publiko: 1. DAVID Malan: 1, ĉar krampo 0 Rezultas tuj estos la programo nomo, kiel ni vidis. Do krampo 1 estas la unua vorto ke mi, la uzanto, enigis. Mi tuj iros antaŭen kaj savi ĉi. Mi tuj iros en mia dosierujo kie mi metis tiun dosieron. Mi tuj faros fari saluton 3. Comp IO estas okej. ./hello Zamyla Entajpu. Kion mi faru al vi? Mi estis kaptita de surprizo min por momento tie. Kion mi faru al vi? Publiko: Nomo. DAVID Malan: La dosiero fakte nomita hello3.c. Kaj mi faris tion nur por consistencia, ĉar ni havis hello.c de la pasinteco en la linio de kodo. Do ni ripari ĉi ./hello krampo haltostreko 3 Zamyla. Eniri. Kaj nun ni havas saluton, Zamyla. Dume, mi povas ŝanĝi ĉi tion al esti Rob, aŭ vere neniu alia vorto. Sed ni konsideru angulo kazo. Kio povus atendi okazos se Mi ne tajpas ies nomon en cxiuj? Publiko: Eraro. DAVID Malan: Eraro de iu speco, eble. Ni vidu. Eniri. Nula. Do printf estas reale esti iom protekta nin tie kaj laŭvorte presado malfermita paren nula, sed eĉ pli malbona aĵoj povas okazi. Kaj ĝuste por pruvi io vi absolute ne devus fari, ni iru en tie kaj komenci ŝovas ĉirkaŭ. Ĝuste? Se mi scias, ke la foton en memoro estas esence ĉi: argv krampo 1 havas Zamyla, argv krampo 0 havas ./hello aux ./hello-3. Kio estas en krampo 2? Do mi povas respondi ke pridemandi min, ĉu ne? Mi povas nur ŝanĝi la 1 al 2. Mi povas nun recompilar saluton 3 ./hello3 Ni zomi kaj batis Enter. Whoops. Neniu citilo. Interesa. Do tio estas speco de malvarmeta al vidu kio alia estas tie. Do kio alia estas ene de mia portebla komputilo? Ni savu ĝin per krampo 3. Faru hello3, ./hello-3. Scivola. Kaj nun ni iru vere bold-- 50. Do tio estas vere subnaĝado profundo en mia komputilo la memoro. 50 indeksoj en. Do fari saluton 3 ./hello-3. Scivola. Bone, nun mi estas nur tuj senzorge. Ni iru al 5.000. Bone. Do lasu min recompilar. Faru hello3, ./hello-3. OK. Nun kelkaj el vi, eble esti ampolo pafante. Kiel multaj el vi havas vidis tiun mesaĝon antaŭe? OK. Do, kial? Odds are-- kaj ekzistas malsamaj aĵoj kiuj povas kaŭzi ĉi, kaj klare vi estas en bona company-- ni devas klare kaŭzis kio nomiĝas oni segmentación kulpo. Kaj longan rakonton mallonga por hodiaŭ, mi tuŝis segmento de memoro ke mi ne havas. Kie segmento simple signifas eron de memoro, ke mi ne havas. Nun la komputilo garantias ke se mi kuri ./helloZamyla ke mi povas tuŝi argv esti krampo 0 kaj argv krampo 1. Sed argc estas valoro 2, kiu signifas mi estas nur allowed-- estas varo de la honoro system-- tuŝi krampo 0 kaj krampo 1. Se mi iras plu, ekzistas absolute tuj estos memoro tie. Mia RAM ekzistas fizike en la komputilo. Sed kiu scias, kio estas tie? Ja, mi kuras multnombraj programojn unu fojo. Mi havu seen-- se mi ne faras tion en la Appliant sed sur mia Mac aŭ PC-- mi havu vidis la enhavon de email. Mi povus esti vidita momenteto mesaĝo mi ĵus sendis. Anything ke eblus konstanta ĉirkaŭ en memoro povus esti alirita per vojo de tiu arbitra kvadrata krampo skribmaniero. Aŭ, plej malbona ankoraŭ, Vi povus havi trovi unu el miaj pasvortoj ke mi ĵus tajpis, en kiu oni programo estis stokitaj en memoro tiel kiel aŭtentigi min kaj tiam nur ia lasis ĝin en RAM ĝis mi forlasis tiun programon. Kaj efektive, tiu estas unu el la danĝero kaj la potencoj uzi lingvon kiel C. Vi havas senbrida aliro al la tuta enhavo de programo memoro, kaj kio malbona infanoj povas eĉ fari en tiuj cases-- speciale kiam ni atingi ttt programado al la fino de la semestro, ni reviziti ĉi topic-- estas poke ĉirkaŭe, potenciale, ies komputilo memoro kaj trovi tiajn kuriozaĵojn kiel ni vidis tie. Aŭ eĉ pli malbone ankoraŭ, pasvortoj kiujn li aŭ ŝi povas tiam uzi fari malbonajn agojn. Do klare mi ne faris tion, ĉar bizara aĵoj komencas okazi. Ja, tiu estas programo plorkriado. Ĉi tiu estus la ekvivalento de Mac OS aŭ Vindozo programo fenestro simple malaperi. Neatendita eraro okazis. En la komandlinion medio ni vidas ion kiel tiu. Sed tio kial, estas mi simple tuŝi memoro kiu ne apartenas al mi. Do ni defendas kontraŭ tio oni iom alimaniere rigardante tiun programon tie. Do, denove, la skeleto ke ni vidis earlier-- kaj mi reliefigis tiu tempo int. Kaj ĉiu tiu tempo ĉefa havas ja revenis valoro. Kvankam en la plejmulto de nia prelego ekzemploj ni neniam iam uzita reveni ion ĉefa. Ni nur skribi printf proksime frizita streĉa kaj tio estas ĝi. Sed por libera, kion la tradukilo estis faranta vin, efektive, estas reveni 0 por vi. Turns out-- kaj estas iom counterintuitive-- ke 0 estas bona. Ĝi ne signifas falsan mem. 0 estas bona, kaj ĉiu ne-0 valoro, la mondo decidis, povas signifi eraro. Do se vi iam paneas ion sur vian komputilon, aŭ programo ĵus mortis sur vin kaj vi alveninta kelkaj eraraj fenestro sur via ekrano, dirante eraro negativa 49 aŭ eraro 23-- iuj ŝajne arbitra value-- tio ĉar programisto estas malfacile-kodita valoron kiel negativa 49 aŭ pozitiva 23 reprezenti ajnan numeron, kuraĝas diri, de 4 miliardoj eblaj aĵoj kiuj povus iri malbone en programo. Do kiel eble mi prenu avantaĝo de ĉi mi? Nu, lasu min malfermi programon ke mi skribis anticipe, kaj poke ĉirkaŭ linio nomita hello 4. Kaj estas preskaŭ identaj, krom ke lia akiris iom de eraro-kontrolado. En tiu kazo, mi denove deklaris ĉefa prenado du argumentoj, sed tiu tempo, sur linio 17, avizo Mi faras iom de prudento ĉeko. Mi certigante ke argc egalas egalas 2. Ĉar se ĝi estas, ke signifas mi povas sekure tuŝi ne nur krampo 0, sed krampo 1. Kaj Mi iros antaŭen kaj presi, en tiu kazo, Zamyla aŭ Rob aŭ kion ajn vorton mi tajpis ekstere. Kaj nun simple por akiri iom pli taŭga, Mi iras al eksplicite reveni 0 por signifi ĉio bonas. Nenio malbona okazis. Sed per konvencio, mi tuj reveni 1 aux sincere ĉiu ne-0 valoro, se iu iris malbone. Nun la uzanto ne tuj vere rimarkas kio okazas. Ja se mi iros en tiun dosierujon, ni zomi kaj kreos hello 4 ./hello-4 Zamyla kondutas kiel mi atendis. Sed se mi anstataŭe ne tajpas io, nenio ŝajnas okazi, sed ne frakasi. Kaj se mi anstataŭ fari ion kiel Rob estas Proctor en Thayer-- interŝanĝo arbitrajn informojn. Sed rimarki, argv 1, 2, 3, 4, kaj 5 devus nun ekzistas en la memoro. Tio ankaŭ ne estas kion mia programo atendas, ĉar mi kontrolis ĉu argc egalas egaluloj 2 aŭ ne. Do mi nun defendas kontraŭ tio. Nun, kiel flanken, ni la programmer-- aŭ prefere ni la users-- neniam vidos ke 0 aŭ 1 sed uzanta ilo nomita sencimigilo aŭ aliaj iloj, kiel ni vidos antaŭe longe vi la programisto povas fakte vidi kio povus esti iri malbone ene de via programo. Do, demandojn pri argc? Yeah. Publiko: Mi vidis kie ne havis la karaktero, [inaudible] nur diris kordo stelo d, kiel karaktero asterisko komo. Ĉu ili ekvivalentan tie? DAVID Malan: Estas. Do la demando estas, vi havas foje vidinta programojn kiel tiu kiu ne diru kordo argv krampo sed anstataŭ diri ion kiel char stelo argv krampo. Kaj estas eĉ aliaj variantoj ke vi povus vidi. Ili estas ja ekvivalentaj. Nuntempe, ni havas tiujn speco de trejnado radoj en la formo de ŝnuro en la CS50 bibliotekon, sed en malmulta pli de semajno aŭ tiel ni tuj forigos ke obstrukco entute kaj reale rigardi kion la signo kaj la stelo estas, kaj kiel tiuj rilatas al memoro reprezento pli ĝenerale. Do ni revenu al tiu. Aliaj demandoj en nia argv aŭ argc? Yeah. Publiko: Kial ĝi revenos eraro [inaudible]? DAVID Malan: Kial ĝi reveni eraro only-- ho! En la antaŭa kazo, kiam ni estis futzing ĉirkaŭe kun memoro, kial nur reveni eraro kiam mi vere tajpas granda nombro? Mallonga respondo estas, ni ĵus bonŝanca. Ĝenerale parolante, komputilo atribuas memoro en pecojn, kaj li donis al mi sufiĉe grandan pecon, kiu Mi forkuris, sen esti rimarkita, de tuŝi krampo 2, krampo 3 krampo 50, sed kiam mi puŝis mia sorto, mi iris preter la limoj de la eron de memoro la mastruma sistemo estis donita al mi. Kaj tio estas kiam krampita malsupren kaj diris: Ne. Segmentación eraro. Yeah. Publiko: Kiel funkcias la komputilo konas la valoron de argc? DAVID Malan: Kiel funkcias la komputila konas la valoron de argc? Kiam vi kuri programon, tiu programo, por naturo de la palpebrumantaj prompto, Estas enmanigis la tabelo de vortoj kiuj tajpas ĉe la prompto, kiu estis tajpita ĉe la prompto. Kaj tial estas via mastruma sistemo kiu esence popolas ĉefaj argumentoj por vi. Do tio estas unu el la servoj ke vi ricevas, ia sekrete sub la kapuĉo de mastruma sistemo. Aliaj demandoj? Yeah. Publiko: Kion kerno nekropsia signifas? DAVID Malan: Kion kerno nekropsia signifas? Do, tio estas bona demando. Kaj lasu min reiri en ĉi dosierujo tie. Kaj vi rimarkos ke Mi havas novan dosieron tie. Ĝi estas ja nomata kerno, kaj ĝi estas fakte tipe decan grandeco de dosiero. Tio estas esence instantánea La enhavo de mia programo memoro aŭ RAM kiam frakasis. Kaj ĉi tio estos utila, potenciale, diagnostically, iam ni parolas en futura prelego kaj sekcio pri sencimigo, ĉar vi efektive povas fari ekvivalento de cifereca nekropsio sur tiu dosiero helpi elkompreni kion vi faris malbonon en via programo. Yeah. Publiko: Ĉu argc komando en mem, aŭ vi povas nomumi ĝin io? DAVID Malan: Bona demando. Ĉu argc komando en sin, aŭ vi povas nomumi ĝin io? Estas definitive ne komando. Estas simple variablo La nomo aŭ argumento nomo, kaj tiel absolute ni povus voki ĉi foo, ni povus nomi tiun stangon, kiu inklinas esti la go-vortoj ke komputilo sciencisto tuj. Sed per konvencio, ni uzas argc kaj argv. Sed tio estas nur homaj konvencio, nenio pli. Bone. Do rezultas, mi estis rakontante iom de blanka lie-- kaj sincere, en la estonteco, vi vidos ni estis rakontante aliaj blankaj mensogoj. Sed nuntempe, ni iras senŝeligi reen unu el tiuj. En tiu kazo tie kiam mi antaŭe kuris programon kiel ./hello aŭ ./hello-3 Zamyla, ni havis la enhavon de mia komputilan memoron rigardante malafable ŝatas ĉi. Sed memoru kion ŝnuro estas. Kion ni diru semajno kia kordo fakte estas sub la kapuĉo? Publiko: Array de signoj. DAVID Malan: Ĝi estas tabelo de signoj, dekstra? Do ni havu tabelo de kordoj, sed, siavice, ŝnuro estas tabelo de signoj. Do, se mi vere volas esti anal kiam mi desegni tiun bildon, Mi devus vere esti desegnante ĝin iom pli kiel tiu, per en ĉiu de ĉi tiuj indeksoj de mia argv tabelo, tie estas sin tutajn kordo kiuj mem estas en tabelo. Kaj nun la blanka mensogo ni diras hodiaŭ estas ke la bildo ne aspektas tute kiel tiu. Fakte, la malgrandaj kvadratoj estas tipe ekster la grandaj rektanguloj tie. Sed ni revenu al tio antaŭ longe. Sed tio estas ./hello backslash 0, kiu estante la speciala karaktero kiun demarca la finon de ŝnuro, kaj ni havas alian post Zamyla nomo. Do kion signifas tio? Nu, lasu min antaŭeniri kaj malfermi du aliaj ekzemploj ke estas haveblaj rete. Oni nomas argv1.c kaj la alia estas argv2. Estas súper simpla programo kiu Estas malsama de pasintaj programoj en tiu momento mi uzas argc kaj argv tien. Kaj nun mi integrante kun buklo en linio 18, de i = 0 sur ĝis argc. Kaj kion mi povos fari kun tiu linio de kodo tien? En la angla. Tiu evidente pruvas uzon de argc. Sed en la angla, kion faras ĝi farus se mi kuros ĉi programo? Yeah? Publikon: ĝi tuj presi viajn screen kiel multaj tempoj kiel vi deziras. DAVID Malan: Ĝuste. Do kion ajn vortojn mi tajpu ĉe la prompto, estas tuj vomas ilin al mi unu por linio. Do ni iru antaŭen kaj fari tion. Lasu min iri en mia dosierujo kaj do fari argv1 ./argv1. Kaj nun, ni tenu ĝin simpla. Ni faras nenion en komenco. Ĝi faris presi ion kaj tio estas ja la nomo de la programo, ĉar tio estas en krampo 0. Se mi nun diras foo, ĝi tuj faros tiuj du, kaj se mi diros foo trinkejo, ĝi estas dironta tiujn tri aferojn. Nun ke estas iom interesa, eble. Sed memoru ke argv estas tabelo de kordoj, sed ŝnuro estas tabelo de signoj, tiel ni povas preni aĵojn muesca kaj apliki tiun bazan logiko kaj fari kodon aspektas iom pli kripta, rekoni. Sed por havi ingita buklo, io simila kion vi eble memoras de Mario, Ekzemple, se vi faris ĝin tiamaniere. Do nun rimarkas sur linio 19, mi denove ripetanta super miaj argumentoj, de 0 je ĝis argc. Kaj nun en linio 21-- min pruntado truko de lasta week-- Mi kontrolis, kio estas la longo de argv krampo i. Mi stokante tiu respondo en n. Kaj tiam mi integrante de j je ĝis n, kie j estas inicializado al 0. Do, konvencio por kalkula. Kiam vi uzas i, se vi havas ingita iteracio, vi ne povas uzi i denove, alikaze vi clobber, potenciale, la valoron ekster la interna banto. Do mi uzas j por konvencio. Ni povus uzi k. Se vi havas pli ol k, vi probable havi tro multe nestumado, kutime. Sed nun rimarkos mian printf linio estas iomete malsamaj. Mi ne presado% s, mi presi% c, kiu, kompreneble, Estas lokokupilon por char. Kaj nun rimarkas tiun sintakson. Nova. Ni ne vidis lin antaŭe. Sed logike, ĉi simple signifas akiri la Ith ĉenon en argv kaj akiri la jth kio? Publiko: Karaktero. DAVID Malan: Karaktero en tiu ĉeno. Do per rektaj krampoj sekvata de kvadrataj krampoj, tio estas subnaĝado unua en argv la kordoj, kaj tiam la dua rektaj krampoj kun j Estas submarinismo en la karakteroj de ke aparta ĉenon en argv. Kaj tiam, nur por bonan mezuron, Mi presi novan linion tie. Do lasu min antaŭeniri kaj malfermi supren iomete pli granda fenestro do ni povas vidi tion en ago. Lasu min iri en tiu dosierujo. Kaj nun faros argv-2-- whoops-- fari argv-2, ./argv 2. Eniri. Kaj ĝi estas iom malfacila legi vertikale, sed tio estas ja la nomo de la programo, sekvita de malplenan linion. Nun lasu min antaŭeniri kaj fari foo. Simile malfacile legi, sed estas ja presi unu karaktero por linio. Kaj se mi faros trinkejo, estas nun presi tiujn linio por linio. Do la takeaway tie ne estas tiom ke, wow, rigardu ĉi neta nova lertaĵo kie vi povas akiri la enhavon de tabelo de specifaj karakteroj, sed prefere kiel ni prenas tiujn bazajn ideoj kiel la indeksita en tabelo, kaj tiam indeksado enen tabelo kiu estis en tiu tabelo, kaj ĝuste apliki la samajn ideojn iomete pli kompleksaj ekzemploj. Sed la basics vere ne ŝanĝiĝis, eĉ ekde la pasinta semajno. Nun tiu estas speco de oportuna, en tiu, memoras, en semajno nulo Ni ludas kun telefona libro kiel ĉi. Kaj eĉ se tio estas evidente fizika pecoj de papero, Vi povas ia pensi telefono libro kiel tabelo. Certe, se vi estus al reimplement tiu pecoj tiujn pecojn de papero en komputilo, verŝajne vi uzus ion kiel tabelo por stoki ĉiuj tiuj nomojn kaj numerojn de A tuta vojo tra Z. Do tio estas agrabla, ĉar permesu al ni ŝancon, eble, konsideri kiom vi povus fakte implementar iu simila. Kiel kun serio de pordoj tie. Do se mi could-- ni bezonas volontulo veni supren. Ni vidu. An familiarizados vizaĝon eble, familiarizados vizaĝon eble. Kiom proksimume en oranĝo? Tie. Oranĝkolora ĉemizo, venis supren. Ni iru antaŭen nun kaj movado tiuj pordoj sur la flanko, movi tiujn de la vojo dum momento. Kio estas via nomo? Ajay: DAVID Malan: Ajay. David. Agrable renkonti vin. Bone. Do ni havas malantaŭ tiuj ses pordojn per cifereca sur la screen-- aŭ, pli ĝuste, sep pordoj sur la screen-- tutan faskon da nombroj. Kaj mi diris al vi nenion en advance-- interkonsentis? Ajay: Nenio anticipe. DAVID Malan: Ĉiuj mi deziras vin fari nun estas trovi por mi kaj por ni, vere, la numero 50, unu paŝon samtempe. Ajay: Numero 50? DAVID Malan: La nombro 50. Kaj vi povas malkaŝi kio estas malantaŭ ĉiu el tiuj pordoj simple tuŝante ĝin per fingro. Damn ĝin. [Ridado] [Aplaŭdo] Tre bone farita. OK. Ni havas belan donacon premion por vi ĉi tie. Via elekto de filmoj ni diskutis pasintsemajne. Ajay: Ho viro. Ho, mi neniam vidis Spaceballs. DAVID Malan: Spaceballs. Bone. Do tenas nur unu momenton. How-- ni faru ĉi oni teachable moment-- kiel vi irad trovanta la numero 50? Ajay: Mi elektis hazarde. DAVID Malan: Do vi elektis hazarde kaj akiris bonŝanca. Ajay: Jes. DAVID Malan: Bone. Bonega. Do nun vi havis ne alveninta bonŝanca, kion alian eble okazis malantaŭ tiuj pordoj? Do, se mi iru antaŭen kaj malkaŝi tiujn numerojn tie, ili reale estas en hazarda ordo. Kaj la plej bona vi povus havi farita, sincere, estas por, fine, en la plej malbona kazo, kontrolanta ilin cxiujn. Do vi havas super-bonŝanca, kiu ne estas kion ni volas nomi algoritmon. Jes, Congrats. Sed nun let's-- humuro min, se vi povus. Ni iru al tiu langeto tie. Kaj tie ĉi estas la nombroj en klara kio ŝajnas esti hazarda ordo, kaj ili estis. Sed nun se mi anstataŭ reklamon ke malantaŭ tiuj pordoj estas nombroj kiuj estas ordo. La celo nun estas ankaŭ trovi ni la numeron 50. Sed faru algorítmicamente kaj diru al ni, ke vi tuj ĝin. Kaj se vi trovas ĝin, vi observos la filmon. Vi ne trovos ĝin, donu gxin returne. Ajay: Do mi tuj kontrolu la finoj unue, por determini se there's-- [Ridado kaj aplaŭdo] DAVID Malan: Jen vi iras. Ni rigardu unu de Ajay la antaŭuloj, Sean, kiu estis ne tiom bonŝanca. OK, do via tasko ĉi tie, Sean, estas la jena. Mi kaŝis malantaŭ tiuj pordojn la nombro sep, sed kaŝita for en iu el tiuj pordoj tiel estas alia nenegativa nombroj. Kaj via celo estas elpensi ĉi supera vico de nombroj kiel ĝuste tabelo. Ni estas nur vico da pecoj de papero kun ciferoj malantaŭ ili. Kaj via celo estas, uzante nur la supro tabelo tie trovos mi la nombro sep. Kaj ni tiam tuj kritiko kiel vi iri pri faranta ĝin. Trovu ni la nombro sep, bonvolu. No. 5, 19, 13. Tio ne estas lertaĵo demando. 1. Je ĉi tiu punkto via partituro ne estas tre bona, do vi eble tiel plu iri. 3. Daŭrigu. Sincere, mi ne povas helpi sed scivolas kion vi eĉ pensi. Sean: mi povas preni el nur la supera vico. DAVID Malan: Nur la supro vico. Do vi havas tri maldekstren. Do trovu min 7. [Spektantaro krias Sugestoj] Do ambaŭ el tiuj estis miriga por tre malsamaj kialoj. Do ĉi tiu estas kie ni cxesis antaŭ momento, kaj la ŝlosilo _insight_ tie Estis tiuj pordoj devis nombroj malantaŭ ili kiu estis ordigitaj, la ideala takeaway por kio vi povus fari fundamente bona en tiu dua example-- kaj, efektive, tiu estis Sean La unua provo kun numeroj aleatorios same before-- sed tuj kiel tiuj nombroj estas ordo, multe kiel la telefono libro, kion vi povas evidente faros? Kiel vi povas utiligi tiun konon? Yeah. Publiko: Vi iros duonvoje [inaudible]. DAVID Malan: Jes. Ĝuste. Do Ajay komenca instinkto estis por kontroli la ekstremaj, kiel mi memoras, kaj tiam ni ia finita la ekzemplo rapide. Sed se ni komencis fari tion pli metode kune tiuj linioj, sed komencante eble en la meza, ĉar ili estas ordigitaj, Kiam ni malkaŝos la numeron 16, ni do know-- kaj ni faru ĝuste that-- ni do scias ke 50, en hodiaŭa kazo, kiu alvenis al esti dekstre. Do ĝuste kiel en semajno nulo kiam ni ŝiris la telefono libro en duono kaj ĵetis la duonon de la problemo for, sama ideo tie. Ni povas ĵeti ĉi duone de la problemo malaperas. Kaj verŝajne vi plenumadu algorítmicamente, kiam vi scias, ke 50 devas esti dekstren, se ĝi estas ie, estas provi tie, en la mezo de la ceteraj pordoj. Kompreneble, 50 estas pli altaj ol 42, do ni povas ĵeti ĉi ceteraj kvaronon de la problemo for, kaj, fine, identigi iu kiel 50. Sed kiel kun la telefono libro, tiuj numeroj estis donita al ni jam ordo ordo, kiu lasas nin kun la demando, kiel vi preni aferojn en ordo ordo? Kaj, sincere, je kio kosto? Estas unu afero esti enmanigis la telefono libro kaj tiam impresi viaj amikoj per trovanta numeron de telefono vere rapide, ĉu ne? Ŝirante 32 paĝoj por trovi persono el 4 miliardoj paĝoj Ni diris unu ekstrema ekzemplo. Sed kiom da tempo li bezonos Verizon ordigi ke telefono libro? Kiom da tempo ni bezonis ordigi tiujn sep numerojn? Tio estas demando kiun ni tiel malproksime tute ignoris. Do ni respondos tiun demandon nun. Kaj ni ĉiuj el filmojn nun, sed ni ja havas iujn streso pilkojn. Se diri, ok volontuloj ne bonvolus kunigi nin tie? Ni iru antaŭen kaj faru, kiel pri kvar el vi tri el vi tien? Akiri novajn vizaĝojn. Kaj la kvar de vi tie? Kaj now-- ni ne emo here-- kaj numeron ok tien je la fino. Venu supren. Bone. Do kion ni havas ĉi tie ĉiun el vi estas nombro. Se vi ŝatus iri antaŭe, preni tiun numeron. Kio estas via nomo? Artie: Artie. DAVID Malan: Artie, okay. Vi estas la numero 1. Amin: Amin. DAVID Malan: Amin. David. Vi numero 2. Kaj iri antaŭen, kiel Mi transdonis vi la folioj de papero, vicigi vin sur fronto de la muziko staras en la sama ordo kiel supre. Andy: Saluton, Andy. DAVID Malan: Andy, estas agrable vidi vin. Numero 3. Jacob: Jakob. DAVID Malan: Jakob numero 4. Bonvenon surŝipe. GRANT: Grant. DAVID Malan: Grant. Numero 5. Alanna: Alanna. DAVID Malan: Alanna, numero 6. Frances: Frances. DAVID Malan: Frances, numero 7. Kaj? Rachel: Rachel. DAVID Malan: Rahxel, numero 8. Bone. Iru antaŭen kaj akiri vin en tiu ordo. Lasu min metis unu restanta muziko staras en loko. Kie vi bezonos piedestalon? OK. Antaŭeniri kaj simple meti viajn numerojn kie la spektantaro povas vidi ilin, la muzikon stari alfrontas eksteren. Kaj espereble, nia unua prudento ĉeko here-- 4, 2, 6. Ho-oh. Atendu minuton. Ni ne havas 8. Mi bezonas elhejmigi vin de la ekzemplo iel. No. Ne, tio estas okej. Ni vidu. Ni povas fari ĉi tion. Staras. Tie ni iru. Korekta. Bone. Do, nun ni havas 8, 1, 3 7, 5. OK. Bonega. Do la demando en mano estas, kio kosto, kaj tra kia metodo ĉu ni povas efektive ordigi tiujn numerojn tie tiel ke ni povas ia labori malantaŭen, finfine kaj decide-- estas vere impona, estas vere efika, ke mi povas dividi kaj konkeri telefono libro? Ĉu vere efikaj ke Mi povas dividi kaj venki tiuj ciferecaj pecoj de papero sur la tabulo, se eble tuj kostis al ni fortuno en tempo aŭ energio aŭ CPU ciklojn por reale preni nian datumoj en iu ordo ordo? Do ni petas, ke demando. Do unue for, tiuj nombroj estas en preskaŭ hazarda ordo, kaj mi tuj proponos unu algoritmo, aŭ procezo per kiu ni povas ordigi tiujn ulojn. Mi iras al alproksimigi tiu bela naive. Kaj mi tuj rekonas ke estas speco de multe por mi envolver mia menso ĉirkaŭ la tutaj datumoj metis samtempe. Sed vi scias kion? Mi tuj faros iun tre simpla marĝena korektoj. 4 kaj 2 estas misfunkcias, se la celo estas iri de 1 sur ĝis 8. Do vi scias pri kio? Mi tuj vin infanoj interŝanĝi, se vi ŝanĝos fizike pozicioj viajn pecojn de papero. Nun 4 kaj 6, tiuj estas en ordo. Mi iras al forlasi tiujn esti. 6 kaj 8, tiuj estas en ordo. Lasos ilin esti. 8 and1, el ordo. Se vi du ne gravas interŝanĝi. Nun 8 kaj 3, se vi uloj povus interŝanĝi. 8 kaj 7, se vi uloj povus interŝanĝi. Kaj 8 kaj 5, se vi uloj povus interŝanĝi. Nun, mi faris? Ne, evidente ne. Sed mi faris la situacion pli bone, ĉu ne? Kio estis via nomo denove, numero 8? Rachel: Rachel. DAVID Malan: Do Rachel havas efike bobelis supren bela nun, la tutan vojon al la fino de mia tabelo de nombroj ĉi tie. Kaj por ke problemo estas speco de solvita. Nun, klare, 2 ankoraŭ bezonas movi iom, kaj 4 kaj 6 kaj 1. Sed ŝajne mi akiris iom pli proksima al la solvo. Do ni apliku tiun ĉi saman naiva heŭristiko denove. 2 kaj 4, OK. 4 kaj 6, OK. 6 kaj 1, mm-mm. Ni swap. 6 kaj 3 mm-mm. Ni swap. 6 kaj 7 estas okej. 7 kaj 5, nope. Ni swap. Kaj nun 7 kaj 8. Kaj kio estas via nomo denove? Frances: Frances. DAVID Malan: Frances. Do nun Frances estas eĉ pli bonan pozicio, ĉar nun 7 kaj 8 estas korekte bobelis ĝis la supro. Do 2 kaj 4, OK. 4 kaj 1, ni swap. 4 kaj 3, ni swap. 4 kaj 6, vi estas en ordo. 6 kaj 5, Ni swap. Kaj nun tiuj infanoj estas bonaj. Ni estas preskaŭ tie. 2 kaj 1, el ordo, tiel interŝanĝi. Kaj nun lasu min fari prudento ĉeko. 2 kaj 3, 3 kaj 4, 4 kaj 5, 5 kaj 6, 6 kaj 7, 8. OK, do ni faris. Sed je kia kosto faris mi ordigi tiujn numerojn tie? Nu, kiom da paŝoj faris mi potenciale preni kiam ordiga tiuj uloj? Nu, ni revenos al tiu demando. Sed, sincere, se vi havas iom enuas, tio speco de malkaŝi en tiu ĉi ne estis eble la plej kompetenta algoritmo. Kaj efektive, sincere, mi ŝvitis des pli marŝante tien kaj reen. Tio ne sentas aparte efika. Do ni provu ion alian. Se vi uloj povis malaktivigi vin al tiuj ok valoroj. Bonan laboron. Ni rigardu ciferece, por ĝuste momenton antaŭ ni provu ion alian, je kio ĵus okazis. Ĝis tie, vi estas proksimume vidi videbligo de tiuj ok homoj per blua kaj ruĝa stangoj reprezentas nombroj. La alta la lato, La pli granda la nombro. Malplilongigita la trinkejo, la pli malgranda la nombro. Kaj kion vi tuj vidos estas hazarda ordo pli ol ok de ili. Vi tuj vidos tiujn riglilojn akiranta ordigitaj laŭ tiu sama algoritmo, aŭ aro de instrukcioj, kiuj ni vizitos nun bobelo varo. Do rimarki, ĉiun duan aŭ tiel, du stangoj lumigante en ruĝa, estas komparita de la komputilo. Kaj tiam se la granda trinkejo kaj la iom trinkejo estas el ordo, ili estas interŝanĝitaj por mi. Nun tio estas nekredeble teda rigardi tion, certe, por tre longa, sed rimarkas la takeaway-- grandaj stangoj movas dekstren, iom riglilojn movanta maldekstren. Ni aborti tiun procezon kaj akceli ĉi supren esti multe pli rapide, do ni povas akiri altnivelan senso de kio, ja bobelo varo estas faranta. Efektive, ĝi estas fluanta ĝis la dekstre de la lerta, aŭ la tabelo, la grandaj stangoj. Kaj male, la eta stangoj estas bobelanta sian vojon malsupren al la maldekstra, kvankam al rapida ritmo ol ni antaŭe faris. Do, malfacilas vidi kun homoj, sed vide jen ĝuste kion okazis. Sed ni provu fundamente malsaman alproksimiĝon nun. Ni provu alian algoritmo per kiu ni havi vin infanoj komencas en tiuj originalaj pozicioj, kiu estis tiu ordo tie. Kaj ni iru antaŭen nun. Kaj Mi faros ion eĉ pli simple, ĉu ne? Retrospektive interŝanĝante paroj denove kaj denove, preskaŭ iom ruza. Ni faros tion eĉ pli naive, kie se mi volas ordigi tiujn ulojn, lasu min nur observu rigardante por la plej eta ero. Do nun, 4 estas la malgranda nombro mi vidis. Mi tuj memoros tion. Ne, 2 estas pli bona, kaj memoru tion. 1 Estas eĉ pli malgranda. 3, 7, 5. OK. One-- kio estas via nomo denove? Artie: Artie. DAVID Malan: Artie. Do, Artie, iru antaŭen. Mi tuj eltiros vin el la linio. Se vi povus veni tien. Kaj mi bezonas por fari lokon por li. Ni havas decidon punkto tie. Kiel povus ni cedu al Artie tie komence kie numero 1 apartenas? Publiko: Shift. DAVID Malan: Bone, ni povus ŝanĝi ĉiujn. Sed proponi optimumigo. Kiu sentas iom ĝena por min demandi kvar personoj movi la tutan vojon malsupren. Kion alian mi povis fari? Publiko: Switch ilin. DAVID Malan: Switch ilin. Kaj kio estas via nomo denove? Jacob: Jakob. DAVID Malan: Jakob movi. Multe pli eficiente simple havi Jakob swap lokoj kun Artie, kontraste al devigante ĉiuj kvar el tiuj uloj, dankon tre multa por ilia ĝusta pozicio. Kio estas agrabla pri Artie nun, li estas en sia ĝusta pozicio. Ni faru tion denove. 2, kiu estas la plej malgranda nombro mi vidis. 3, 7, 5. OK. 2 estas definitive la plej malgranda. Ne devas fari ajnan laboron. Ni faru ĝin denove. 6. Malgranda? 8. Nope. 4? Ooh. Lasu min memoras 4. 3. Lasu min memoras 3. 7, 5. Malgranda nombro Mi havas vidi sur tiu paŝo estas 3. Se vi ŝatus veni eksteren. Kie ni tuj metos vin? Kaj kio estas via nomo? Alanna: Alanna. DAVID Malan: Alanna, ni tuj devos elhejmigi vi. Sed kiu estas pli efikaj, justaj interŝanĝi du personoj, ol havi multoblajn homoj fakte deflankiĝo super. Nun ni faru tion denove. Mi iras al selekti 4, do venu eksteren. Kaj kiu tuj movi? Numero 8, kompreneble. Se mi nun trovas numeron 5, venu eksteren. Numero 8 tuj get elhejmigis denove. Mi nun tuj trovos numeron 6 en loko. 7 en loko. 8 en loko. Kion ni ĵus faris nun estas iu nomita selektado speco, kaj se ni visualizar ĉi, ĝi estas tuj sentas iom malsama. Ni iru antaŭen kaj de tiu menu tie ĉi visualization-- ni ŝanĝi tiun to-- iras, Firefox. Ni ŝanĝu tion al selektado varo. Kaj ni plirapidigi ĝin kiel antaŭe, kaj komenci la visualización nun. Kaj tiu algoritmo havas malsaman takton al ĝi. Sur ĉiu ripeto, sincere, ĝi estas eĉ pli simpla. Mi simple elektanta la plej malgranda elemento. Nun, sincere, mi alvenis iom bonŝanca ke tempo, en kiu gxi ordo super-rapida. La elementoj estis hazardo. Ne, ĉar ni finfine vidu, funde rapida. Sed ni vidu la tria kaj fina alproksimigi tie kiel al kio okazas. Do ni iru antaŭen kaj malaktivigi vi uloj unu fina tempo esti en tiu ordo tie. Kaj nun, mi tuj esti iom pli saĝa, nur por grupigi niajn algoritmoj. Mi tuj faros. Mi iras al ne iros reen tiom. Sincere, mi estas laca ĉiuj ĉi petolanta. Mi simple tuj prenos kion mi donita al la komenco de la listo, kaj mi tuj ordigi kiu tiam kaj tie. Do jen ni estas. Numero 4. Mi iras al insertar nombro 4 en ordo listo. Farita. Mi asertas nun, kaj ĝuste por fari tion pli klara, tiu parto de mia listo estas ordigita. Estas speco de stulta aserto, sed ja 4 estas ordigitaj en lerta de grandeco unu. Nun, mi tuj transpreni numero 2. Numero 2 Mi nun iras al enmeti en la ĝusta loko. Do kie ankoraŭ 2 aparteni? Evidente, ĉi tien. Do bonvolu kopii dorson, se vi povus. Kaj kial vi ne infanoj simple preni via muziko staras kun vi tiun tempon. Kaj ni perforte enmeti vin en la komenco de la listo. Do iom pli da laboro. Mi devis movi Jakob ĉirkaŭe, kaj kio estas via nomo? Amin: Amin. DAVID Malan: Amin. Sed almenaŭ mi ne iros tien kaj reen. Mi simple prenas tion kiel mi iras. Mi nur enmeto ilin en la ĝusta loko. 6, tiu estas efektive sufiĉe facila. Ni enigi vi tie, se vi nur volis movi super iomete. Numero 8, ankaŭ sufiĉe facila. Ĝuste tie. Damn ĝin. Numero 1 ne povas simple interŝanĝi kun Amin tie, ĉar tio okazas por salato supren la ordon. Do ni devas esti iom pli saĝa. Do, Artie, se vi povus asist momente. Ni iru antaŭen kaj ŝanĝi nun, kontraste nia antaŭa algoritmoj, por fari lokon por Artie ĉi tie en la komenco. Do, je la fino de la tago, mi estas speco de faris kion mi volis eviti antaŭe. Kaj do mia algoritmo estas speco de dorsflankita, intelekte, el kio origine estis. Mi nur faras la vagantaj ĉe malsama punkto. Nun mi estas ĉe 3. Ho, malbenita. Ni devas fari pli da laboro denove. Do ni puŝi vin ekstere. Ni movi 8, 6, 4-- ho oh-- kaj 3 tuj iros dekstren tie. Do almenaŭ malpeza ŝparadoj tiu tempo. 7, ne tro da laboro farenda. Do se vi volas pop reen, ni enŝovu vi. Kaj laste, 5, se vi volas pop reen, ni bezonas movi vin, vin, vi ĝis kvin estas en loko. Do nun vidi tiun en altnivela grafike, ni faros ĉi algoritmo videbligo unu plian tempon. Tiel ĉi ni nomos inserción varo. Ni kuras tiel, kiel rapida, kaj komenci tie. Kaj ĝi ankaŭ havas malsaman senton. Ĝi estas speco de iĝi pli kaj bona, sed ĝi neniam perfekta gxis mi venos kaj milda en tiuj mankoj. Ĉar, denove, mi nur prenas kion Mi transdonitan de maldekstre al dekstre. Do mi ne tiom bonŝanca ke ĉio estis perfekta. Tial ni havis tiujn iom mispositions ke ni fiksita tempo. Do ĉiu el tiuj algoritmoj ŝajnas kuri je iomete malsamaj pasxojn. Fakte, kion vi diras estas la plej bona aŭ la plej rapida ĝis nun? Bobelo varo, la unuan? Selektado varo, la dua? Inserción varo, la tria? Mi aŭdis iun selektado varoj. Aliaj pensoj? Do rezultas ke ĉiuj tiuj algoritmoj estas fundamente same efika kiel ĉiu alia lando aŭ, inverse, kiel ineficiente kiel ĉiu alia, ĉar ni povas fari fundamente pli ol tri de tiuj algoritmoj. Kaj tio estas iom de blanka mensogo, tro. kiam Mi diras, kiel efika aŭ kiel senutila, tio almenaŭ super-grandaj valoroj de n. Kiam ni havas nur ok homoj ĉi tie, aŭ eble 50 aŭ tiel stangoj sur la ekrano, vi absolute rimarki diferencojn inter tiuj tri algoritmoj. Sed kiel n, la nombro de homoj, aŭ la nombron de ciferoj, aŭ la nombro de homoj en la telefono libro, aŭ la nombro de retpaĝoj en Google datenbazo ricevas pli kaj pli, ni vidos, ke ĉiuj tri el ĉi tiuj algoritmoj estas vere bela malriĉa. Kaj ni povas fari fundamente pli ol tio. Ni rigardu, fine, je kio tiuj algoritmoj multobligita sonas kiel en la kunteksto de kelkaj aliaj tiel pere de tiu videbligo tie kiuj enkondukos nin numeron de algoritmoj. Ni iru antaŭen kaj gratuli niaj partoprenantoj tie, ĉiuj el kiuj ordo sin tre bone. Se vi ŝatus preni adiaŭa donaco. Vi povas subteni vian nombroj kiel bone. Kaj kion vi vidos, aŭ pli ĝuste aŭdi, nun, estas kiu kiel ni metis sonoj al ĉiu el tiuj stangoj kaj asocii ĝin kun la programaro, malsaman oftecon de sono, vi povas envolver vian menson pli audioly ĉirkaŭ kio ĉiu de ĉi tiuj aferoj aspekti. La unua el ili estas la inserción speco [Tonoj] Tiu estas bobelo varo. [Tonoj] Selektado varo. [Tonoj] Iu nomita merge varo. [Tonoj] Gnome varo. [Tonoj] Estas tio por CS50. Ni vidos vin merkredon. Rakontanto: Kaj nun, "Deep Pensoj "de Daven Farnham. Kial a por buklo? Kial ne fari ĝin pli bone? Mi ŝatus fari kvin buklo. [Ridado]