1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID MALAN: Pekala. 3 00:00:11,940 --> 00:00:16,470 Yani bu CS50, ve bu Şimdi haftanın üç başlangıç. 4 00:00:16,470 --> 00:00:19,960 >> Şimdiye kadar, biz ettik kadar Yani C programları yazıyor 5 00:00:19,960 --> 00:00:23,210 bu biraz bakmak Burada böyle bir şey. 6 00:00:23,210 --> 00:00:25,470 Yani biz bir çift olan var Keskin üstünde bulunuyor. 7 00:00:25,470 --> 00:00:28,490 Biz geçersiz, int main var, ve var sonra bir şey ortada yapmak, 8 00:00:28,490 --> 00:00:30,590 içinde kod bazı biraz Bu işlevin. 9 00:00:30,590 --> 00:00:34,170 Fakat anahtar gerçeği olmuştur Burada geçersiz söyleyerek oldum. 10 00:00:34,170 --> 00:00:39,320 Yani geçersiz, bu kez tüm belirtir Bu program çalıştırılacak ki, 11 00:00:39,320 --> 00:00:41,300 Sadece adını aracılığıyla çalıştırılabilir. 12 00:00:41,300 --> 00:00:46,330 Başka kelime yazamaz ya da Programın adı ne zaman sonra sayılar 13 00:00:46,330 --> 00:00:46,830 çalışan. 14 00:00:46,830 --> 00:00:51,200 Bu nedenle, örneğin, bir program, eğer merhaba denilen bir dosyaya derlenmiş, 15 00:00:51,200 --> 00:00:53,480 Eğer ./hello yapabileceğini, ama o kadar. 16 00:00:53,480 --> 00:00:56,750 >> Tek yolu olabilir Bu programa girdi sağlamak 17 00:00:56,750 --> 00:00:57,960 Bir işlevini çağırarak olduğunu. 18 00:00:57,960 --> 00:00:59,790 Örneğin, hangi işlevi Biz bugüne kadar kullanarak olmuştur 19 00:00:59,790 --> 00:01:00,950 kullanıcıdan girdi almak için? 20 00:01:00,950 --> 00:01:02,117 >> İZLEYİCİ: dize alın. 21 00:01:02,117 --> 00:01:04,700 DAVID MALAN: dize olsun, ya da etmek int olsun, ya da başkalarının gördüm, 22 00:01:04,700 --> 00:01:07,630 Eğer onları henüz kullanmadıysanız bile, gibi, uzun uzun ve benzeri olsun. 23 00:01:07,630 --> 00:01:09,380 Ama varsayalım biz Aslında başlamak istiyorum 24 00:01:09,380 --> 00:01:12,760 Biraz daha vardır yazma programları açıkçası, biraz daha, çok yönlü ve 25 00:01:12,760 --> 00:01:15,090 Eğer ettik komutları gibi umarım, elde edilmiş, 26 00:01:15,090 --> 00:01:16,550 biraz alışkın. 27 00:01:16,550 --> 00:01:18,560 Cd alanı Dropbox gibi. 28 00:01:18,560 --> 00:01:20,800 Bu, tabii ki değişiklikler Dizin, varsayarak 29 00:01:20,800 --> 00:01:23,590 John Harvard'ın evinde konum Dizin, Dropbox klasörüne. 30 00:01:23,590 --> 00:01:27,380 Bu arada, bu gibi bir komut , pset2 adlı yeni bir dizin oluşturur 31 00:01:27,380 --> 00:01:30,290 aklınıza gelebilecek zaten ya yakında sorunun iki set. 32 00:01:30,290 --> 00:01:33,970 Yap Merhaba, tabii ki, bir komut merhaba adlı bir program oluşturur 33 00:01:33,970 --> 00:01:35,770 merhaba nokta c adında bir dosyadan. 34 00:01:35,770 --> 00:01:39,140 Ve bunların her birinde davalar, şimdi, biz aldık 35 00:01:39,140 --> 00:01:43,620 Sözde bir argüman sağlamak Komut satırı, yanıp sönen istemi, 36 00:01:43,620 --> 00:01:48,540 O marka bilir, böylece ne inşa, ve öylesine Bu mkdir oluşturmak için hangi klasörün bilir, 37 00:01:48,540 --> 00:01:51,110 ve böylece cd bilir nereye gitmek istiyorum. 38 00:01:51,110 --> 00:01:54,720 Ama şimdiye kadar, biz söylemeye devam ana, varsayılan işlevi, 39 00:01:54,720 --> 00:01:58,500 Bir boşluk ifadesi vardır Bu parantez içinde, 40 00:01:58,500 --> 00:02:01,250 ki bunun anlamı Herhangi bir argüman alamaz. 41 00:02:01,250 --> 00:02:03,240 >> Peki, bugün başlayan ne yapacağız 42 00:02:03,240 --> 00:02:06,270 biz başlatmak için gidiyoruz olduğunu Bu bile gibi şeyler destekleyen. 43 00:02:06,270 --> 00:02:08,990 Aslında, bu durumda, size hangi genellikle elle yazmayın, 44 00:02:08,990 --> 00:02:11,130 Bu yapıyor olun Bizim için, orada değil 45 00:02:11,130 --> 00:02:15,840 bir değil, bir, iki, üç ilave Program en adını sonra dizeleri 46 00:02:15,840 --> 00:02:16,850 clang. 47 00:02:16,850 --> 00:02:18,240 Peki nasıl bu elde edebilirim? 48 00:02:18,240 --> 00:02:20,260 >> Peki, bugünden itibaren, İstediğimiz durumlarda 49 00:02:20,260 --> 00:02:22,855 aracılığıyla girdi sağlamak için Komut satırı sözde, 50 00:02:22,855 --> 00:02:24,980 Biz eklemeye başlamak için gidiyoruz Burada yellow-- ne var 51 00:02:24,980 --> 00:02:30,520 int argc virgül boşluğu değiştirme dize argv açık dirsek yakın dirsek. 52 00:02:30,520 --> 00:02:32,520 Şimdi bu ilginç nedenlerle bir çift için. 53 00:02:32,520 --> 00:02:35,690 Bir, bizi yazalım gidiyor Biraz daha dinamik programlar. 54 00:02:35,690 --> 00:02:37,570 Ancak, daha zorlayıcı, o kadar açık oluyor 55 00:02:37,570 --> 00:02:40,340 olarak artık bir konuşma Ne diziler olabilir gerçekten 56 00:02:40,340 --> 00:02:43,300 ne bir dize için kullanılabilir Gerçekten kaput altında olduğunu, 57 00:02:43,300 --> 00:02:47,320 Gelecek haftaya kadar biz dalış başlattığınızda makine olarak nasıl daha derine 58 00:02:47,320 --> 00:02:48,590 Bu şeyler işin tüm yapım. 59 00:02:48,590 --> 00:02:51,920 Ama şimdi, en çizelim, belki bir resim. 60 00:02:51,920 --> 00:02:54,950 >> Eğer bir program yazarken ilan ana ile 61 00:02:54,950 --> 00:02:58,810 Bu şekilde, bu tür ana bu İki argüman, bir int alır 62 00:02:58,810 --> 00:03:03,233 ve- ne veri türü İkinci argüman nedir? 63 00:03:03,233 --> 00:03:04,529 >> İZLEYİCİ: Dizi. 64 00:03:04,529 --> 00:03:05,320 DAVID MALAN: Dizi. 65 00:03:05,320 --> 00:03:09,170 Bir var gibi Yani ilk bakışta görünüyor dize, ancak köşeli parantez dikkat edin. 66 00:03:09,170 --> 00:03:12,760 Biz tanıttı son kez hatırlayın Bir dizi kavramı. 67 00:03:12,760 --> 00:03:16,210 Ve diziler köşeli parantez kullanın bağlamlarda bir çift. 68 00:03:16,210 --> 00:03:19,160 Sen kare kullanabilirsiniz parantez bir diziye gitmek için 69 00:03:19,160 --> 00:03:22,710 ve bu gibi, belirli bir öğeyi almak dirsek 0 veya dirseği 1 veya 2 braket. 70 00:03:22,710 --> 00:03:25,500 Ama biz, eğer kısaca, gördüm Geçen hafta bu aynı zamanda 71 00:03:25,500 --> 00:03:28,790 Bu köşeli parantezleri kullanabilirsiniz Bir dizinin boyutunu beyan, 72 00:03:28,790 --> 00:03:31,790 Eğer önceden biliyorsanız kaç int ya da kaç dizeleri ya da ne olursa olsun 73 00:03:31,790 --> 00:03:32,630 Aslında istiyorum. 74 00:03:32,630 --> 00:03:34,790 Bu yüzden orada 's çıkıyor Burada üçüncü bir bağlam 75 00:03:34,790 --> 00:03:37,890 Bu içinde hiçbir numarası vardır köşeli ayraç. 76 00:03:37,890 --> 00:03:41,920 Burada olduğu gibi zaman, belirtin argv gibi bir şey adı, 77 00:03:41,920 --> 00:03:44,550 hangi sadece bir fantezi yoludur argüman vektör, diyerek hangi 78 00:03:44,550 --> 00:03:47,750 başka süslü bir yoludur , argümanların bir dizi söyleyerek 79 00:03:47,750 --> 00:03:50,870 Açık dirsek yakın dirsek sadece Eğer ille yapmak anlamına gelir 80 00:03:50,870 --> 00:03:52,960 ne kadar büyük önceden bilmek dizi, olacak 81 00:03:52,960 --> 00:03:55,070 ancak bir dizi olacak biliyorum. 82 00:03:55,070 --> 00:03:57,320 Eğer bilmiyorsanız Yani sayı, orada koymayın 83 00:03:57,320 --> 00:04:01,160 Açık dirsek yakın dirsek için argv bir dize olmadığı anlamına gelir, 84 00:04:01,160 --> 00:04:03,124 ama dizelerden oluşan bir dizi. 85 00:04:03,124 --> 00:04:05,040 Yani sözdizimsel, eğer Geçen hafta geri düşünmek, 86 00:04:05,040 --> 00:04:09,460 söyleyerek çok benzer int yaş açık dirsek gibi bir şey, 87 00:04:09,460 --> 00:04:10,984 ve sonra bir şey bundan sonra. 88 00:04:10,984 --> 00:04:12,150 Peki bu neye benziyor? 89 00:04:12,150 --> 00:04:13,399 Aslında bir resmini çizmek edelim. 90 00:04:13,399 --> 00:04:18,756 Yani Main ile bu programı çalıştırdığınızda İki argüman içinde tanımlanan sahip 91 00:04:18,756 --> 00:04:21,339 Bu parantez, sen aslında en az iki parçalar var 92 00:04:21,339 --> 00:04:23,560 bellek size teslim Kaputun altında. 93 00:04:23,560 --> 00:04:26,550 Bir, bu dikdörtgen olarak çizer Ben olacak gibi, argc adlandırılan olacak. 94 00:04:26,550 --> 00:04:30,645 Ve sadece hızlı recap olarak, argc veri türü nedir? 95 00:04:30,645 --> 00:04:31,270 Yani bir int var. 96 00:04:31,270 --> 00:04:33,480 Yani bir numara gidiyor argc-- sırayla gitmek 97 00:04:33,480 --> 00:04:35,660 dışarı argüman sayısı yanlısıdır. 98 00:04:35,660 --> 00:04:38,887 Bu arada, ben bir dizi olarak argv boğuldum. 99 00:04:38,887 --> 00:04:40,970 Ve ben gerçekten bilmiyorum o olacak ne kadar, 100 00:04:40,970 --> 00:04:42,470 yani bugünün amaçlar için nokta nokta nokta. 101 00:04:42,470 --> 00:04:43,636 Bazı uzunlukta alabilirsiniz. 102 00:04:43,636 --> 00:04:45,640 Ama ben burada resimde ettik en az dört dikdörtgenler. 103 00:04:45,640 --> 00:04:50,970 Yani bu hafızaya bir yığın argv dize dize nokta nokta nokta, 104 00:04:50,970 --> 00:04:53,950 ve argc sadece bir yığınıdır Bir tamsayı için bellek. 105 00:04:53,950 --> 00:04:55,710 >> Peki şimdi, en biraz daha hassas olalım. 106 00:04:55,710 --> 00:04:59,200 Eğer, ben dizeleri olduğunda Bu dizide, denir 107 00:04:59,200 --> 00:05:03,290 argv, ben onlara almak istiyorum bireysel, sadece geçen hafta olduğu gibi, 108 00:05:03,290 --> 00:05:05,670 Biz gösterimi kullanmak için gidiyoruz argv dirsek 0 gibi 109 00:05:05,670 --> 00:05:07,650 İlk şeyi bir dizi alır. 110 00:05:07,650 --> 00:05:10,440 Argv tutucusu 1 almak için vb ikinci şey, ve. 111 00:05:10,440 --> 00:05:14,597 Burada anahtar hala 0 konum olmak indexed-- biz hala 0 sayıyorsanız. 112 00:05:14,597 --> 00:05:16,430 Şimdi aslında atalım Bu bir şey koymak. 113 00:05:16,430 --> 00:05:21,670 Ben adlı bir programı derlemek olsaydı merhaba merhaba nokta c adında bir dosyadan, 114 00:05:21,670 --> 00:05:24,340 ve sonra ben bu programı çalıştırın nokta ile merhaba yırtmaç, 115 00:05:24,340 --> 00:05:28,380 Benim bilgisayar, benim laptop ne, Kaputun altında gibi bakmak 116 00:05:28,380 --> 00:05:31,300 Ben nokta koşmak an merhaba çizgi ve Enter'a basın? 117 00:05:31,300 --> 00:05:33,500 Peki, bu belki de biz tarif ne olabilir 118 00:05:33,500 --> 00:05:37,010 Bilgisayarınızın en içeriği olarak Bellek veya RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Başka bir deyişle, bilgisayar, sihirli bir şekilde sizin için, 120 00:05:40,330 --> 00:05:45,360 argc 1 numara koyar, AKA argcount, ve tam anlamıyla dize koyar 121 00:05:45,360 --> 00:05:48,200 ./hello argv aralığındaki 0. 122 00:05:48,200 --> 00:05:51,750 Ben hiçbir fikrim, açıkçası, ne var argv aralığındaki 1 ya da 2 ya da 3, 123 00:05:51,750 --> 00:05:55,550 Kullanıcı bulunmadığı çünkü eğer , ./hello dışında bir şey yazdığınız 124 00:05:55,550 --> 00:05:58,550 bu varsaymak gidiyoruz büyük olasılıkla çöp değerleri, 125 00:05:58,550 --> 00:05:59,700 tabiri caizse. 126 00:05:59,700 --> 00:06:02,650 Bellek Bu parçalar mevcut, ama bizim kadar değil 127 00:06:02,650 --> 00:06:05,710 Çünkü, onlara bakmak için argcount sadece bir tanesidir. 128 00:06:05,710 --> 00:06:07,870 >> Şimdi, bu arada, eğer ben başka bir programı çalıştırmak yazma, 129 00:06:07,870 --> 00:06:12,250 daha düzgün bir komut cd, senin yanıp prompt-- cd uzayda 130 00:06:12,250 --> 00:06:17,200 Ben etkili olduğunu çalıştırdığınızda Dropbox--, cd programı çalıştırdığınızda, argc, 131 00:06:17,200 --> 00:06:22,270 Benim bilgisayar belleğinin içinde, içindir En kısacık ikinci sayı 2. 132 00:06:22,270 --> 00:06:25,936 Ve sonra argv dirsek o vardır cd, argv dirsek 1, Dropbox vardır 133 00:06:25,936 --> 00:06:28,560 ve sonra tabii komut tamamlar, böylece bu belleğin tüm 134 00:06:28,560 --> 00:06:30,420 esasen uzağa gider ve başka bir şey için kullanılır. 135 00:06:30,420 --> 00:06:32,270 Ve bu yüzden diyorum bulunuyor İkinci bir bölünmüş. 136 00:06:32,270 --> 00:06:35,720 >> Bu arada, biz mkdir pset2 yaparsak, resim, hemen hemen aynı görünüyor 137 00:06:35,720 --> 00:06:37,900 ama argv içinde farklı dizeleri ile. 138 00:06:37,900 --> 00:06:42,570 Ben merhaba clang çizgi yaparsanız merhaba nokta c aynı fikir. 139 00:06:42,570 --> 00:06:47,060 Daha şeyler için doldurulur argv ve argc, tabii ki, 4'tür. 140 00:06:47,060 --> 00:06:49,150 Bu yüzden, diğer bir deyişle Hatta bu dizi olsa 141 00:06:49,150 --> 00:06:52,950 Bazı nokta nokta nokta olabilir Değişken uzunlukta, yani, konuşmak 142 00:06:52,950 --> 00:06:56,720 Her zaman bunun nerede sonunu biliyorum argc size anlatacağım çünkü, bir 143 00:06:56,720 --> 00:07:00,120 hangi noktada durdurmak zorunda argv elemanların bakarak. 144 00:07:00,120 --> 00:07:03,660 Sadece dört bakabilirsiniz Bu durumda, toplam. 145 00:07:03,660 --> 00:07:06,600 >> Peki, şimdi bir göz atalım belki basit bir program. 146 00:07:06,600 --> 00:07:09,070 Sadece merhaba diyor biri Zamyla gibi birine. 147 00:07:09,070 --> 00:07:12,620 Yani ben bir program yazmak için gidiyorum iddia Sadece bir an hangi aracılığıyla yapabileceğim 148 00:07:12,620 --> 00:07:16,670 Sonra ben istiyorum ./hello uzay Zamyla, ve benim program şey yazdırmak için 149 00:07:16,670 --> 00:07:18,520 gibi süper basit bir "merhaba, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Şimdi geçmişte biz GetString kullandım. 151 00:07:20,100 --> 00:07:22,850 Geçmişte, bu yüzden bile Eğer programlama için yeni konum 152 00:07:22,850 --> 00:07:27,180 oran bir kırbaç olabilir vardır GetString kullanan programı 153 00:07:27,180 --> 00:07:29,390 ve daha sonra printf kullanır Zamyla merhaba demek için. 154 00:07:29,390 --> 00:07:31,290 Ama bu sefer getString kullanmayın etmeyelim. 155 00:07:31,290 --> 00:07:37,510 Beni yerine SIĞINMACININ içine gidelim ve standart I Ç nokta h eklerim. 156 00:07:37,510 --> 00:07:41,160 Beni de CS50 nokta h dahil edelim. 157 00:07:41,160 --> 00:07:44,730 Şimdi ana int, ve şimdi ben değilim Bugün geçersiz yapmayacağız. 158 00:07:44,730 --> 00:07:51,200 Bunun yerine, ben int argc yapacağım dize argv açık dirsek yakın dirsek, 159 00:07:51,200 --> 00:07:52,640 Bir numara belirterek. 160 00:07:52,640 --> 00:07:54,644 Ve şimdi burada benim yapmak sözde edilir. 161 00:07:54,644 --> 00:07:57,560 Şimdi ne yapacağım ben, bir inanç bir sıçrama biraz yapacağız, 162 00:07:57,560 --> 00:08:00,560 Ben kullanıcı en varsaymak gidiyorum doğru bu programı kullanmak için gidiyoruz, 163 00:08:00,560 --> 00:08:04,980 ve ben sadece gidiyorum , merhaba printf% sn yapmak. 164 00:08:04,980 --> 00:08:06,630 Yani hiçbir şey yeni. 165 00:08:06,630 --> 00:08:11,470 Ama şimdi ne kelime koymak istiyorum Programın adından sonra kullanıcı türleri. 166 00:08:11,470 --> 00:08:16,970 Yani Zamyla ./hello alan yaparsanız, ben şekilde programlı erişim istiyorum 167 00:08:16,970 --> 00:08:20,870 unquote "Zamyla." alıntı bu yüzden Benim argüman vektörüne gidebilir, 168 00:08:20,870 --> 00:08:25,980 Benim dizeler dizisi ve komuta eğer, Yine, ./hello alanı Zamyla idi 169 00:08:25,980 --> 00:08:29,340 ne numara istiyorum yapmak Burada argv koymak için? 170 00:08:29,340 --> 00:08:29,840 HEDEF KİTLE: 1. 171 00:08:29,840 --> 00:08:32,355 David MALAN: 1, çünkü dirsek 0 çıkıyor 172 00:08:32,355 --> 00:08:34,230 olacak Programın adı gördüğümüz gibi. 173 00:08:34,230 --> 00:08:37,789 Yani braket 1 ilk kelime I ki, kullanıcı, yazdığınız. 174 00:08:37,789 --> 00:08:39,559 Ben go ahead ve bu tasarruf için gidiyorum. 175 00:08:39,559 --> 00:08:42,830 Ben klasöre gitmek için gidiyorum nerede bu dosyayı koydum. 176 00:08:42,830 --> 00:08:44,920 Ben merhaba 3 yapmak yapacağım. 177 00:08:44,920 --> 00:08:46,230 Zorunlu IO Tamam. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla girin. 179 00:08:51,380 --> 00:08:54,480 Neyi yanlış yaptım? 180 00:08:54,480 --> 00:08:57,270 Ben sürpriz yakalandı Kendimi orada sadece bir an için. 181 00:08:57,270 --> 00:08:58,230 Neyi yanlış yaptım? 182 00:08:58,230 --> 00:08:59,220 >> İZLEYİCİ: Adı. 183 00:08:59,220 --> 00:09:01,767 >> DAVID MALAN: dosyanın Aslında hello3.c denir. 184 00:09:01,767 --> 00:09:03,850 Ve ben sadece için yaptım tutarlılık, biz ettik çünkü 185 00:09:03,850 --> 00:09:06,550 vardı merhaba.c en Online kodu geçmiş. 186 00:09:06,550 --> 00:09:11,550 Yani bu ./hello düzeltmek izin braket çizgi 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Girin. 188 00:09:12,370 --> 00:09:14,030 Ve şimdi, merhaba Zamyla var. 189 00:09:14,030 --> 00:09:17,650 Bu arada, ben bu değiştirebilirsiniz Rob, ya da gerçekten başka bir kelime. 190 00:09:17,650 --> 00:09:19,230 >> Ama bir köşe durumda düşünelim. 191 00:09:19,230 --> 00:09:24,360 Eğer ne olacak bekliyoruz olabilir Ben hiç kimsenin adını yazmayın? 192 00:09:24,360 --> 00:09:25,270 >> İZLEYİCİ: Hata. 193 00:09:25,270 --> 00:09:27,300 >> DAVID MALAN: Bir hata belki çeşit, bir. 194 00:09:27,300 --> 00:09:28,200 Görelim. 195 00:09:28,200 --> 00:09:29,440 Girin. 196 00:09:29,440 --> 00:09:30,210 Boş. 197 00:09:30,210 --> 00:09:33,870 Yani printf aslında ediliyor Bize biraz koruyucu 198 00:09:33,870 --> 00:09:38,131 Burada, ve tam anlamıyla açık paren baskı null, ama daha kötü şeyler olabilir. 199 00:09:38,131 --> 00:09:40,130 Ve sadece göstermek için bir şey kesinlikle 200 00:09:40,130 --> 00:09:42,800 yapmamalıyız, en gidelim Burada ve çevresinde alay başlar. 201 00:09:42,800 --> 00:09:43,300 Doğru? 202 00:09:43,300 --> 00:09:46,410 Ben biliyorum Eğer bu resim içinde Bellek, esas olarak bu 203 00:09:46,410 --> 00:09:52,660 argv tutucusu 1 Zamyla, argv vardır dirsek 0 ./hello vardır, ya da ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Ne aralığındaki 2 nedir? 205 00:09:55,400 --> 00:09:58,210 Yani o cevap verebilir Doğru, kendimi sorgulamaya? 206 00:09:58,210 --> 00:10:00,460 Ben sadece bir 2 1 değiştirebilirsiniz. 207 00:10:00,460 --> 00:10:07,270 Ben şimdi, 3 merhaba yeniden derlemek olabilir ./hello3 en yakınlaştırmak ve Enter tuşuna basın edelim. 208 00:10:07,270 --> 00:10:08,270 Whoops. 209 00:10:08,270 --> 00:10:10,660 Hiçbir alıntı işareti. 210 00:10:10,660 --> 00:10:12,540 İlginç. 211 00:10:12,540 --> 00:10:15,530 Yani bu tür için serin var Burada başka ne bakın. 212 00:10:15,530 --> 00:10:17,130 >> Yani benim laptop içinde başka ne? 213 00:10:17,130 --> 00:10:20,390 En braket 3 ile kaydedin edelim. 214 00:10:20,390 --> 00:10:25,190 ./hello-3, Hello3 olun. 215 00:10:25,190 --> 00:10:26,500 Meraklı. 216 00:10:26,500 --> 00:10:30,560 Ve şimdi gerçekten bold-- 50 başlayalım. 217 00:10:30,560 --> 00:10:34,340 Böylece gerçekten derin dalış bulunuyor Benim bilgisayarın belleğine. 218 00:10:34,340 --> 00:10:35,930 50 endeksleri içinde. 219 00:10:35,930 --> 00:10:41,950 Yani merhaba 3 ./hello-3 yapmak. 220 00:10:41,950 --> 00:10:42,680 Meraklı. 221 00:10:42,680 --> 00:10:44,660 Pekala, şimdi ben sadece pervasız almak için gidiyoruz. 222 00:10:44,660 --> 00:10:47,331 En 5,000 gidelim. 223 00:10:47,331 --> 00:10:47,830 Tamam. 224 00:10:47,830 --> 00:10:49,520 Bu yüzden bana yeniden derlemek izin. 225 00:10:49,520 --> 00:10:51,460 ./hello-3, Hello3 olun. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 TAMAM MI. 228 00:10:56,460 --> 00:10:59,250 Size bazı Şimdi, orada olabilir gidiyor bir ampul olacak. 229 00:10:59,250 --> 00:11:01,900 Kaç var olan daha önce bu mesajı gördünüz mü? 230 00:11:01,900 --> 00:11:03,440 TAMAM MI. 231 00:11:03,440 --> 00:11:04,420 Peki, neden? 232 00:11:04,420 --> 00:11:07,250 >> Oran mudur ve farklı var Bu neden olabilir şeyler, 233 00:11:07,250 --> 00:11:09,730 ve açıkça iyi konum company-- açıkça var 234 00:11:09,730 --> 00:11:11,900 ne denir neden Bir segmentasyon hatası. 235 00:11:11,900 --> 00:11:15,890 Ve bugün için uzun lafın kısası, ben belleğin bir bölümünü dokundu 236 00:11:15,890 --> 00:11:17,060 Ben olmamalıdır. 237 00:11:17,060 --> 00:11:19,970 Nerede bir kesimi sadece bir yığın anlamına gelir bellek ben olmamalıdır. 238 00:11:19,970 --> 00:11:25,530 Şimdi bilgisayar garanti eğer ben Ben argv dokunabilir ki ./helloZamyla çalıştırın 239 00:11:25,530 --> 00:11:27,760 dirsek 0 ve argv dirseği 1 olmak. 240 00:11:27,760 --> 00:11:32,730 Ama argc değeri 2, bu ben demektir sadece onur çeşit allowed-- 241 00:11:32,730 --> 00:11:35,180 dokunmak sisteminin, dirseği 0 ve desteği 1. 242 00:11:35,180 --> 00:11:37,990 Ben herhangi bir uzak giderseniz, orada kesinlikle orada bellek olacak. 243 00:11:37,990 --> 00:11:40,660 Benim RAM fiziksel var bilgisayar. 244 00:11:40,660 --> 00:11:42,080 Ama kim var biliyor? 245 00:11:42,080 --> 00:11:44,450 Nitekim, ben birden koşuyorum Tek seferde programları. 246 00:11:44,450 --> 00:11:46,910 Ben olsam seen-- olabilir SIĞINMACININ Bu yapıyor 247 00:11:46,910 --> 00:11:49,937 ama benim Mac veya PC-- ben olabilir Bir e-posta içeriğini görüldü. 248 00:11:49,937 --> 00:11:52,270 Ben bir anlık görmüş olabilir mesajı Geçenlerde yolladım. 249 00:11:52,270 --> 00:11:55,390 Olabilir bir şey bellekte etrafında kalan 250 00:11:55,390 --> 00:11:59,180 yoluyla erişilen olabilirdi Bu keyfi köşeli ayraç notasyonu. 251 00:11:59,180 --> 00:12:02,850 Ya da daha kötüsü, aklınıza gelebilecek Benim şifreleri biri bulundu 252 00:12:02,850 --> 00:12:05,859 Geçenlerde, yazdığınız bir o edeceğimi program belleğinde depolanmış olan şekilde 253 00:12:05,859 --> 00:12:07,900 Beni kimlik, ve Daha sonra sadece tür bıraktı 254 00:12:07,900 --> 00:12:09,910 RAM ben bu programı çıkıncaya kadar. 255 00:12:09,910 --> 00:12:12,860 >> Gerçekten de, bu biridir tehlike ve bir güçler 256 00:12:12,860 --> 00:12:15,980 C gibi bir dil kullanarak Sen sınırsız erişim var 257 00:12:15,980 --> 00:12:18,860 tüm içeriğini Bir programın bellek, 258 00:12:18,860 --> 00:12:21,340 ve ne kötü adamlar can Hatta bu cases-- yapmak 259 00:12:21,340 --> 00:12:23,807 özellikle biz Web programlama olsun 260 00:12:23,807 --> 00:12:26,890 dönem sonuna doğru, biz olacak etrafında kurcalamak bu topic-- tekrar, 261 00:12:26,890 --> 00:12:31,660 potansiyel, birileri bilgisayarın var Bellek ve meraklı şeyler bulabilirsiniz 262 00:12:31,660 --> 00:12:32,570 Biz orada gördüğümüz gibi. 263 00:12:32,570 --> 00:12:36,900 Hatta daha kötüsü, şifreleri ki o ya o zaman kötü şeyler için kullanabilirsiniz. 264 00:12:36,900 --> 00:12:40,240 >> Yani açıkça ben bu yapmamam gerekirdi garip şeyler olmaya başlar çünkü. 265 00:12:40,240 --> 00:12:42,310 Nitekim, bu program kilitleniyor olduğunu. 266 00:12:42,310 --> 00:12:44,580 Bu eşdeğer olacaktır Windows'un Mac OS veya 267 00:12:44,580 --> 00:12:46,770 Bir program penceresi sadece kaybolan. 268 00:12:46,770 --> 00:12:48,300 Beklenmeyen bir hata oluştu. 269 00:12:48,300 --> 00:12:50,840 Komut satırı ortamında Biz böyle bir şey görüyorum. 270 00:12:50,840 --> 00:12:54,480 Ama bu yüzden, ben sadece dokunuyorum mi Bana ait olmayan bellek. 271 00:12:54,480 --> 00:12:57,090 >> Yani bu a karşı savunmak izin Farklı bir şekilde biraz 272 00:12:57,090 --> 00:12:59,010 Burada bu program bakarak. 273 00:12:59,010 --> 00:13:01,000 Yani, yine, iskelet Biz earlier-- gördüm 274 00:13:01,000 --> 00:13:02,480 ve ben bu sefer int vurguladık. 275 00:13:02,480 --> 00:13:05,900 Ve tüm bu zaman ana vardır gerçekten değer döndürdü. 276 00:13:05,900 --> 00:13:09,120 Olsa bile bizim ders çoğunda biz bir kez kullanılan hiç örnekler 277 00:13:09,120 --> 00:13:10,990 Ana şey geri döner. 278 00:13:10,990 --> 00:13:13,710 Biz sadece printf yakın yazma kaşlı ayraç ve o kadar. 279 00:13:13,710 --> 00:13:16,500 Ama ücretsiz, ne derleyici, sizin için yapıyor 280 00:13:16,500 --> 00:13:19,510 etkin senin için 0 dönüyor. 281 00:13:19,510 --> 00:13:22,950 Şunları bir konrtol açar ve biraz var 0 iyi olduğunu counterintuitive--. 282 00:13:22,950 --> 00:13:24,690 Bu kendi başına yanlış anlamına gelmez. 283 00:13:24,690 --> 00:13:29,080 0 iyidir, ve olmayan 0 değer, dünya karar verdi, 284 00:13:29,080 --> 00:13:30,619 Bir hata delalet edebilir. 285 00:13:30,619 --> 00:13:32,910 Hiç berbat ettik Yani eğer Bilgisayarınızda bir şey yukarı, 286 00:13:32,910 --> 00:13:36,600 veya bir program sadece size vefat etti ve Bazı hatalı pencere gotten 287 00:13:36,600 --> 00:13:40,360 Ekranda, diyerek hata 49 ya da hata negatif 23-- 288 00:13:40,360 --> 00:13:44,170 bu bazı görünüşte keyfi value-- Bir programcı kodlanmış çünkü 289 00:13:44,170 --> 00:13:49,370 49 negatif ya da pozitif gibi bir değer 23 herhangi bir sayı temsil etmek, söylemek cesaret, 290 00:13:49,370 --> 00:13:53,340 4 milyar olası şeyler bir programda yanlış gidebilir. 291 00:13:53,340 --> 00:13:55,700 >> Peki nasıl alabilir Bunun avantajı, ben? 292 00:13:55,700 --> 00:13:58,970 Peki, bana bir programı açalım Ben önceden yazdığı, 293 00:13:58,970 --> 00:14:01,450 ve çevrimiçi merhaba 4 denilen etrafında karıştırmak. 294 00:14:01,450 --> 00:14:05,650 Ve o hariç, hemen hemen aynı olduğunu onun hata denetimi biraz var. 295 00:14:05,650 --> 00:14:09,660 Bu durumda, yine ilan ettik İki argüman alarak ana, 296 00:14:09,660 --> 00:14:13,180 ama bu sefer, hat 17, bildirim Ben bir sağlamlık denetimi biraz yapıyorum. 297 00:14:13,180 --> 00:14:17,100 Ben emin değilim argc 2 eşittir. 298 00:14:17,100 --> 00:14:18,960 Eğer öyleyse, o Ben güvenle yapabilirsiniz demektir 299 00:14:18,960 --> 00:14:21,420 sadece braket 0, ancak braket 1 dokunun. 300 00:14:21,420 --> 00:14:24,330 Ve ben go ahead ve çıktısını, Bu durumda, Zamyla veya Rob 301 00:14:24,330 --> 00:14:26,020 ya da ben dışarı yazdığınız ne olursa olsun kelime. 302 00:14:26,020 --> 00:14:28,020 Ve şimdi sadece almak için daha uygun biraz 303 00:14:28,020 --> 00:14:31,910 Ben açıkça dönmek için gidiyorum 0 tüm iyi belirtmek için. 304 00:14:31,910 --> 00:14:33,300 Kötü bir şey oldu. 305 00:14:33,300 --> 00:14:38,590 >> Ama kongre, ben gidiyorum 1 dönmek, ya da açıkçası olmayan 0 değeri, 306 00:14:38,590 --> 00:14:40,160 bir şeyler ters giderse. 307 00:14:40,160 --> 00:14:43,270 Şimdi kullanıcı gitmiyor Gerçekten neler edin. 308 00:14:43,270 --> 00:14:50,410 Nitekim ben bu dizine giderseniz, biz yakınlaştırmak ve merhaba 4 yapabilirim 309 00:14:50,410 --> 00:14:54,210 beklediğim gibi ./hello-4 Zamyla davranır. 310 00:14:54,210 --> 00:14:58,570 Ama bunun yerine yazmazsanız şey, hiçbir şey gibi görünüyor, 311 00:14:58,570 --> 00:14:59,680 ama çökmez. 312 00:14:59,680 --> 00:15:04,660 Ve ben bunun yerine bir şey yaparsam Rob gibi bir gözetmen olduğunu 313 00:15:04,660 --> 00:15:07,550 Thayer-- paylaşım keyfi bilgiler. 314 00:15:07,550 --> 00:15:13,680 Ama haber, argv 1, 2, 3, 4, ve 5 şimdi bellekte bulunmalıdır. 315 00:15:13,680 --> 00:15:16,540 Yani, çok değil, ne olduğunu benim program, bekliyor 316 00:15:16,540 --> 00:15:20,300 Ben olup olmadığı kontrol ettik, çünkü argc eşittir 2 ya da eşittir. 317 00:15:20,300 --> 00:15:22,140 Yani şimdi bu karşı savunmak ediyorum. 318 00:15:22,140 --> 00:15:25,290 >> Şimdi, gibi bir kenara, biz programmer-- ya da daha doğrusu biz users-- 319 00:15:25,290 --> 00:15:29,670 0 veya 1 ama bir kullanarak bu Görmez aracı, Debugger, ya da diğer araçları olarak adlandırılan 320 00:15:29,670 --> 00:15:32,250 önce göreceğimiz gibi Uzun, sen programcı 321 00:15:32,250 --> 00:15:36,590 Aslında ne olabilir görebilirsiniz Programınızın içinde yanlış gidiyor. 322 00:15:36,590 --> 00:15:39,170 >> Peki, argc üzerinde herhangi bir soru? 323 00:15:39,170 --> 00:15:40,873 Evet. 324 00:15:40,873 --> 00:15:45,292 >> İZLEYİCİ: nerede gördüm onlar karakter vardı değil, [inaudible] 325 00:15:45,292 --> 00:15:49,669 gibi dize yıldız d dedi karakter yıldız virgül. 326 00:15:49,669 --> 00:15:50,710 Burada eşdeğer mı? 327 00:15:50,710 --> 00:15:51,626 >> DAVID MALAN: Bunlar. 328 00:15:51,626 --> 00:15:55,080 Soru Yani, var bazen görülen programlar 329 00:15:55,080 --> 00:15:57,270 yok ki böyle dize argv dirseğini demek 330 00:15:57,270 --> 00:16:01,015 ama onun yerine bir şey söylemek Char yıldız argv dirsek gibi. 331 00:16:01,015 --> 00:16:03,140 Ve hatta diğer var görebileceğiniz varyantları. 332 00:16:03,140 --> 00:16:04,264 Gerçekten de denktir. 333 00:16:04,264 --> 00:16:06,240 Şimdilik, bu var Eğitim tekerlekleri tür 334 00:16:06,240 --> 00:16:09,737 CS50 dize şeklinde üzerinde Kütüphane, ama sadece bir hafta içinde içinde 335 00:16:09,737 --> 00:16:12,570 ya da biz kaldırmak için gidiyoruz tamamen ve aslında tıkanıklığı 336 00:16:12,570 --> 00:16:16,820 karakter ve yıldız ne bakmak vardır, ve bu belleğe ilgilendirmeyen nasıl 337 00:16:16,820 --> 00:16:18,140 temsil daha genel. 338 00:16:18,140 --> 00:16:19,540 Yani biz tekrar bu geleceğiz. 339 00:16:19,540 --> 00:16:21,540 >> Bizim argv veya argc Diğer sorular? 340 00:16:21,540 --> 00:16:22,397 Evet. 341 00:16:22,397 --> 00:16:24,438 HEDEF KİTLE: Neden geri vermedi Bir hata [inaudible]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID MALAN: did it Neden oh Sadece-- bir hata döndürür! 344 00:16:29,230 --> 00:16:31,813 Bir önceki durumda, ne zaman biz Hafızalı çevresinde futzing edildi, 345 00:16:31,813 --> 00:16:35,110 Neden sadece bir hata döndürür yaptı Ben gerçekten büyük bir sayı yazdığınız zaman? 346 00:16:35,110 --> 00:16:36,620 Kısa cevap biz sadece şanslı var, bir. 347 00:16:36,620 --> 00:16:39,240 Genel olarak, bir bilgisayar parçalar bellek ayırır, 348 00:16:39,240 --> 00:16:42,900 ve bana yeterince büyük bir yığın verdi Ben, fark edilmeden, kaçtı 349 00:16:42,900 --> 00:16:46,280 dokunaklı dirsek 2, dirsek 3, dirsek 50, ama en kısa sürede itti 350 00:16:46,280 --> 00:16:49,080 Benim şans, ben gitti bellek yığın sınırları 351 00:16:49,080 --> 00:16:50,520 İşletim sistemi beni vermişti. 352 00:16:50,520 --> 00:16:52,720 Ve bu ne zaman var aşağı kelepçeli ve hayır dedi. 353 00:16:52,720 --> 00:16:54,580 Segmentasyon hatası. 354 00:16:54,580 --> 00:16:55,692 Evet. 355 00:16:55,692 --> 00:16:58,890 >> İZLEYİCİ: yok nasıl bilgisayar argc değerini biliyor musun? 356 00:16:58,890 --> 00:17:02,390 >> DAVID MALAN: yok nasıl Bilgisayar argc değerini biliyor musun? 357 00:17:02,390 --> 00:17:07,920 Eğer bir program çalıştırdığınızda, bu program, Yanıp sönen istemi doğası gereği, 358 00:17:07,920 --> 00:17:11,359 dizi verilir Yazılan edildi sözler 359 00:17:11,359 --> 00:17:13,300 isteminde, o oldu isteminde yazdınız. 360 00:17:13,300 --> 00:17:16,569 Ve böylece işletim olduğunu sistem, esas olarak, 361 00:17:16,569 --> 00:17:20,329 sizin için ana argümanlarını doldurur. 362 00:17:20,329 --> 00:17:22,829 Böylece servislerinden biri var olsun ki, çeşit gizlice 363 00:17:22,829 --> 00:17:24,869 kaputu altında bir işletim sistemi. 364 00:17:24,869 --> 00:17:27,118 Diğer sorular? 365 00:17:27,118 --> 00:17:27,618 Evet. 366 00:17:27,618 --> 00:17:29,787 >> İZLEYİCİ: çekirdek dökümü ne demek? 367 00:17:29,787 --> 00:17:31,370 DAVID MALAN: çekirdek dökümü ne demek? 368 00:17:31,370 --> 00:17:32,950 Yani bu iyi bir soru. 369 00:17:32,950 --> 00:17:35,312 Ve beni geri gidelim Burada bu dizin. 370 00:17:35,312 --> 00:17:37,270 Ve bunu fark edeceksiniz Orada yeni bir dosya var. 371 00:17:37,270 --> 00:17:41,670 Gerçekten çekirdek denir, ve bu kadar oluyor Aslında tipik bir iyi-boyutlu dosya. 372 00:17:41,670 --> 00:17:45,300 Bu aslında bir anlık olduğunu Benim programın bellek içeriği 373 00:17:45,300 --> 00:17:46,902 o zaman çöktü veya RAM. 374 00:17:46,902 --> 00:17:49,110 Ve bu, yararlı olacaktır Potansiyel olarak, tanı bakımından, 375 00:17:49,110 --> 00:17:52,850 Biz gelecek derste konuşmak kez ve hata ayıklama hakkında bölüm, 376 00:17:52,850 --> 00:17:55,730 aslında yapabilirsiniz, çünkü Dijital otopsi eşdeğer 377 00:17:55,730 --> 00:18:00,300 Bu dosya üzerinde anlamaya yardımcı olmak için Eğer programda ne yanlış yaptım. 378 00:18:00,300 --> 00:18:01,220 Evet. 379 00:18:01,220 --> 00:18:04,450 >> İZLEYİCİ: Bir komut argc mı kendisi, ya da herhangi bir isim olabilir? 380 00:18:04,450 --> 00:18:05,575 >> DAVID MALAN: İyi bir soru. 381 00:18:05,575 --> 00:18:08,040 , Kendi içinde bir komut argc mı veya herhangi bir isim olabilir? 382 00:18:08,040 --> 00:18:09,290 Kesinlikle bir komut değil. 383 00:18:09,290 --> 00:18:13,500 Bu sadece bir değişken en bulunuyor veya bir argüman ismi, 384 00:18:13,500 --> 00:18:15,481 ve bu yüzden kesinlikle biz Bu foo diyebiliriz, 385 00:18:15,481 --> 00:18:18,480 Biz eğilimi bu bar, diyebiliriz go-kelime bir bilgisayar olmak üzere 386 00:18:18,480 --> 00:18:19,860 bilim adamı gider. 387 00:18:19,860 --> 00:18:22,820 Ama kongre, biz argc ve argv kullanın. 388 00:18:22,820 --> 00:18:25,360 Ama bu sadece bir insan var kongre, başka bir şey. 389 00:18:25,360 --> 00:18:25,860 Tamam. 390 00:18:25,860 --> 00:18:28,140 Yani çıkıyor, ben oldum beyaz lie-- biraz söylüyorum 391 00:18:28,140 --> 00:18:31,264 ve açıkçası, gelecekte, görürsünüz diğer beyaz yalan söylüyorum. 392 00:18:31,264 --> 00:18:33,510 Ama şimdi, biz gidiyoruz Bunlardan birini geri soymak. 393 00:18:33,510 --> 00:18:37,310 Zaman önce ben burada bu durumda ./hello veya ./hello-3 gibi bir program koştu 394 00:18:37,310 --> 00:18:42,780 Zamyla, biz içeriğini vardı benim kabaca benzeyen bilgisayarın bellek 395 00:18:42,780 --> 00:18:43,280 Bu. 396 00:18:43,280 --> 00:18:45,070 Ama bir dizedir ne olduğunu hatırlamak. 397 00:18:45,070 --> 00:18:49,279 Biz ne bir hafta önce ne dedin dize aslında başlık altında mı? 398 00:18:49,279 --> 00:18:50,320 HEDEF KİTLE: karakter dizisi. 399 00:18:50,320 --> 00:18:52,111 DAVID MALAN: Bu bir var karakter dizisi, değil mi? 400 00:18:52,111 --> 00:18:55,760 Yani biz bir dizi olabilir şeritler, ancak, sonuç olarak, bir dizi 401 00:18:55,760 --> 00:18:57,150 karakter dizisidir. 402 00:18:57,150 --> 00:19:00,010 Ben gerçekten olmak istiyorsanız Ben bu resim çizmek anal, 403 00:19:00,010 --> 00:19:03,290 Gerçekten çizim olmalıdır Biraz daha böyle, 404 00:19:03,290 --> 00:19:08,000 böylece bunların her biri Benim argv dizi indeksleri, 405 00:19:08,000 --> 00:19:11,432 bütün dize kendisi olduğunu kendisi bu bir dizi olduğunu. 406 00:19:11,432 --> 00:19:13,140 Ve şimdi beyaz yalan Bugün söylüyorsun 407 00:19:13,140 --> 00:19:15,181 resim değil ki oldukça bu gibi görünüyorsun. 408 00:19:15,181 --> 00:19:19,110 Aslında, küçük kareler Büyük dikdörtgenler tipik dış 409 00:19:19,110 --> 00:19:19,610 orada. 410 00:19:19,610 --> 00:19:21,280 Ama biz uzun zaman önce tekrar bu geleceğiz. 411 00:19:21,280 --> 00:19:25,440 Ancak bu, ./hello eğik 0 Bu özel karakter varlık 412 00:19:25,440 --> 00:19:28,310 bir dize sonuna demarcates, ve biz başka bir sonra var 413 00:19:28,310 --> 00:19:29,360 Zamyla adı. 414 00:19:29,360 --> 00:19:30,900 Peki bu ne anlama geliyor? 415 00:19:30,900 --> 00:19:33,410 >> Peki, beni önde gidelim ve diğer iki örnek açmak 416 00:19:33,410 --> 00:19:35,220 online olmasıdır. 417 00:19:35,220 --> 00:19:40,590 Bir argv1.c adlandırılır ve diğer argv2 olan. 418 00:19:40,590 --> 00:19:44,260 Bir süper basit bir program olduğunu Geçmiş programlardan farklı 419 00:19:44,260 --> 00:19:47,260 ki şimdi kullanıyorum argc ve burada argv. 420 00:19:47,260 --> 00:19:54,300 Ve şimdi ben döngü için bir entegre ediyorum argc için yukarı i hat 18 = 0. 421 00:19:54,300 --> 00:19:56,850 Ve ne yapacağım Burada bu kod satırı ile? 422 00:19:56,850 --> 00:19:58,270 İngilizce. 423 00:19:58,270 --> 00:20:00,510 Bu tabii ki argc kullanımını gösterir. 424 00:20:00,510 --> 00:20:03,670 Ama İngilizce, ne yapar Ben bu programı çalıştırırsanız bunu yapmak? 425 00:20:03,670 --> 00:20:04,366 Evet? 426 00:20:04,366 --> 00:20:07,386 >> İZLEYİCİ: Bu yazdırmak için gidiyor senin İstediğiniz kadar birçok kez ekran. 427 00:20:07,386 --> 00:20:08,260 DAVID MALAN: Kesinlikle. 428 00:20:08,260 --> 00:20:10,480 Yani ne olursa olsun sözler bu, isteminde yazın 429 00:20:10,480 --> 00:20:13,120 kusturmak için gidiyor Satır başına bana onları bir. 430 00:20:13,120 --> 00:20:14,370 O yüzden go ahead ve bu yapalım. 431 00:20:14,370 --> 00:20:17,862 Benim dizine gidelim ve argv1 ./argv1 yapabilirim. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Ve şimdi, en basit tutalım. 434 00:20:21,770 --> 00:20:23,834 Ilk olarak bir şey yapalım. 435 00:20:23,834 --> 00:20:26,750 Bir şey yazdırmak yaptım, ve Bu gerçekten programın ismi, 436 00:20:26,750 --> 00:20:28,240 Bu dirsek 0 çünkü. 437 00:20:28,240 --> 00:20:33,290 Ben şimdi foo dersem, bunu yapmak için gidiyor Bu iki ve ben foo bar derseniz, 438 00:20:33,290 --> 00:20:35,580 bu üç şey söyleyecek. 439 00:20:35,580 --> 00:20:37,740 Şimdi belki biraz ilginç. 440 00:20:37,740 --> 00:20:41,450 Ama bu argv hatırlamak dizelerden oluşan bir dizidir, 441 00:20:41,450 --> 00:20:45,960 ama bir dize karakter dizisidir, bu yüzden bir çentik şeyleri alabilir 442 00:20:45,960 --> 00:20:48,560 ve bu temel uygulamak mantık ve kod yapmak 443 00:20:48,560 --> 00:20:51,160 kuşkusuz, biraz daha şifreli görünüyor. 444 00:20:51,160 --> 00:20:53,540 Ama bir iç içe olan döngü, akin şey 445 00:20:53,540 --> 00:20:57,030 Eğer Mario çağırmak olabilir ne, Örneğin, eğer bu şekilde yaptım. 446 00:20:57,030 --> 00:21:00,380 >> Peki şimdi ben, hat 19 fark yine benim argümanlar üzerinde yineleme, 447 00:21:00,380 --> 00:21:02,410 0 yukarı argc için. 448 00:21:02,410 --> 00:21:05,510 Şimdi hattı I 21-- şeyler Son hafta-- bir hile borçlanma 449 00:21:05,510 --> 00:21:11,090 Ben ne olduğunu kontrol ediyorum argv dirsek i uzunluğu. 450 00:21:11,090 --> 00:21:12,920 Ben n bu cevabı saklamak ediyorum. 451 00:21:12,920 --> 00:21:18,230 Ve sonra ben j itibaren entegre ediyorum j 0 başlatıldı n, kadar. 452 00:21:18,230 --> 00:21:19,460 Yani, sayım için kongre. 453 00:21:19,460 --> 00:21:22,335 Eğer bir varsa, i kullandıktan sonra İç içe döngü, sen, yine i kullanamazsınız 454 00:21:22,335 --> 00:21:25,770 aksi takdirde potansiyel, clobber edeceğiz, İç döngü dışında bir değer. 455 00:21:25,770 --> 00:21:27,200 Yani kongre tarafından j kullanıyorum. 456 00:21:27,200 --> 00:21:28,020 Biz k kullanabilirsiniz. 457 00:21:28,020 --> 00:21:31,080 Eğer k daha varsa, muhtemelen tipik, çok fazla iç içe var. 458 00:21:31,080 --> 00:21:33,800 Ama şimdi, benim printf fark çizgi biraz farklıdır. 459 00:21:33,800 --> 00:21:37,520 Ben% s yazdırma değilim, ben değilim % c baskı, tabii ki, 460 00:21:37,520 --> 00:21:39,460 Bir karakter için bir yer tutucudur. 461 00:21:39,460 --> 00:21:40,770 >> Ve şimdi bu sözdizimi dikkat edin. 462 00:21:40,770 --> 00:21:41,270 Yeni. 463 00:21:41,270 --> 00:21:42,630 Biz daha önce görmedim. 464 00:21:42,630 --> 00:21:47,290 Ama mantıklı, bu sadece anlamına gelir argv i dize olsun 465 00:21:47,290 --> 00:21:50,067 ve ne j olsun? 466 00:21:50,067 --> 00:21:50,900 HEDEF KİTLE: Karakter. 467 00:21:50,900 --> 00:21:52,800 DAVID MALAN: Bu dize Karakter. 468 00:21:52,800 --> 00:21:57,100 Yani köşeli parantezleri kullanarak köşeli parantez ardından, 469 00:21:57,100 --> 00:22:00,390 Bu ilk dalış argv en dizeleri içine, 470 00:22:00,390 --> 00:22:02,225 ve daha sonra ikinci j kare parantez 471 00:22:02,225 --> 00:22:06,580 karakter içine dalış argv o belirli dize. 472 00:22:06,580 --> 00:22:09,562 Ve sonra, sadece iyi ölçmek için, Ben burada yeni bir satır baskı yapıyorum. 473 00:22:09,562 --> 00:22:12,020 Yani şimdi beni go ahead ve açalım biraz daha büyük bir pencerede yukarı 474 00:22:12,020 --> 00:22:13,600 bu yüzden eylem görebilirsiniz. 475 00:22:13,600 --> 00:22:15,700 Bana bu klasöre gidelim. 476 00:22:15,700 --> 00:22:22,550 Ve şimdi yapabilirim argv-2-- argv-2 yapmak whoops--, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Girin. 478 00:22:23,110 --> 00:22:24,860 Ve biraz zor dikey okuma, 479 00:22:24,860 --> 00:22:27,920 ama bu gerçekten adı var boş bir satır takip programı. 480 00:22:27,920 --> 00:22:30,210 Şimdi bana go ahead ve foo yapalım. 481 00:22:30,210 --> 00:22:33,210 Benzer şekilde sert okumak, ama bu kadar gerçekten her satıra bir karakter baskı. 482 00:22:33,210 --> 00:22:36,780 Ben bar yaparsam Ve, şimdi var satır satır bu baskı. 483 00:22:36,780 --> 00:22:40,140 Yani burada paket çok değil vay, bu temiz yeni hile bakmak, o 484 00:22:40,140 --> 00:22:44,750 nereye içeriğine alabilirsiniz Bir dizinin belirli karakter, 485 00:22:44,750 --> 00:22:48,380 ama doğrusu biz bu temel alıyoruz nasıl bir diziye endeksleme gibi fikirler, 486 00:22:48,380 --> 00:22:51,620 ve daha sonra bir içine indeksleme bu dizi olduğu dizi 487 00:22:51,620 --> 00:22:56,180 ve sadece aynı fikirleri uygulayarak Biraz daha sofistike örnekler. 488 00:22:56,180 --> 00:22:59,560 Ama temelleri gerçekten var Hatta geçen haftadan bu yana, değişti. 489 00:22:59,560 --> 00:23:02,350 >> Şimdi bu, zamanında tür ki, haftada sıfır, hatırlama 490 00:23:02,350 --> 00:23:04,110 böyle bir telefon rehberi ile oynadı. 491 00:23:04,110 --> 00:23:06,670 Ve bu tabii ki olsa bile kâğıdın fiziksel parçaları, 492 00:23:06,670 --> 00:23:09,150 ne tür düşünebilirsiniz bir dizi olarak bir telefon rehberi. 493 00:23:09,150 --> 00:23:12,770 Eğer olsaydı şüphesiz, reimplement Bu parçalar kağıt bu parçalar 494 00:23:12,770 --> 00:23:15,260 Bir bilgisayar, muhtemelen Eğer bir şey kullanmak istiyorum 495 00:23:15,260 --> 00:23:20,270 Bir dizi tüm bu depolamak için gibi Bir bütün yoldan isimleri ve numaraları 496 00:23:20,270 --> 00:23:23,800 Z. aracılığıyla Yani bu, çünkü güzel bize bir fırsat veriyor, 497 00:23:23,800 --> 00:23:28,310 nasıl olabilir belki, dikkate Aslında böyle bir şey uygulamak. 498 00:23:28,310 --> 00:23:31,250 Burada kapı, bir dizi gibi. 499 00:23:31,250 --> 00:23:36,380 Ben Yapabileceğim Yani eğer biz bir ihtiyaç yukarı gelip gönüllü. 500 00:23:36,380 --> 00:23:36,980 Görelim. 501 00:23:36,980 --> 00:23:40,650 Bir yabancı yüz, belki, belki de yabancı bir yüz. 502 00:23:40,650 --> 00:23:42,090 Nasıl turuncu hakkında? 503 00:23:42,090 --> 00:23:42,680 İşte. 504 00:23:42,680 --> 00:23:45,870 Turuncu gömlek, yukarı gel. 505 00:23:45,870 --> 00:23:52,230 >> Şimdi ve hareket devam edelim tarafa bu kapılar, 506 00:23:52,230 --> 00:23:54,020 Bir an için dışına bu hareket. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Adınız ne? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID MALAN: Ajay. 511 00:23:58,655 --> 00:23:58,680 David. 512 00:23:58,680 --> 00:23:59,451 Tanıştığımıza memnun oldum. 513 00:23:59,451 --> 00:23:59,950 Tamam. 514 00:23:59,950 --> 00:24:04,500 Bu yüzden bu altı arkasında var screen-- üzerinde dijital kapılar 515 00:24:04,500 --> 00:24:07,810 veya, daha doğrusu, yedi kapı numaralarının bir sürü screen--. 516 00:24:07,810 --> 00:24:10,099 Ve sana bir şey söyledim içinde advance-- kabul etti? 517 00:24:10,099 --> 00:24:11,140 AJAY: Önceden bir şey yok. 518 00:24:11,140 --> 00:24:14,730 DAVID MALAN: Tüm ben yapmak istiyorum Şimdi benim için bulmak için, ve bizim için, 519 00:24:14,730 --> 00:24:20,920 Gerçekten, sayı 50, Bir seferde bir adım. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: No 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID MALAN: sayı 50. 522 00:24:22,580 --> 00:24:24,746 Ve sen ne ortaya çıkarabilir Bu kapıların her birinin arkasında 523 00:24:24,746 --> 00:24:27,930 basit bir parmak ile dokunarak. 524 00:24:27,930 --> 00:24:31,364 Kahretsin. [KAHKAHA] 525 00:24:31,364 --> 00:24:34,560 >> [Alkış] 526 00:24:34,560 --> 00:24:39,540 >> Çok iyi yapılır. 527 00:24:39,540 --> 00:24:40,400 TAMAM MI. 528 00:24:40,400 --> 00:24:44,090 Biz güzel bir hediye var Burada sizin için ödül. 529 00:24:44,090 --> 00:24:46,520 Film Sizin seçim biz Geçen hafta tartışıldı. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Ah, dostum. 531 00:24:47,362 --> 00:24:49,050 Ah, ben Spaceballs görmedim. 532 00:24:49,050 --> 00:24:49,520 >> DAVID MALAN: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Tamam. 534 00:24:50,140 --> 00:24:53,790 Yani sadece tek bir an tutun. 535 00:24:53,790 --> 00:24:57,430 Şimdi bu yapalım How-- Bir öğretilebilir moment-- 536 00:24:57,430 --> 00:25:00,412 Eğer nasıl gitti numara 50 bulma? 537 00:25:00,412 --> 00:25:01,370 AJAY: Ben rastgele seçtim. 538 00:25:01,370 --> 00:25:03,420 DAVID MALAN: Yani seçti rastgele ve şanslı var. 539 00:25:03,420 --> 00:25:03,790 AJAY: Evet. 540 00:25:03,790 --> 00:25:04,456 DAVID MALAN: Tamam. 541 00:25:04,456 --> 00:25:05,050 Mükemmel. 542 00:25:05,050 --> 00:25:08,470 Yani şimdi, seni yoktu şanslı, başka ne kazanılmış 543 00:25:08,470 --> 00:25:10,210 Bu kapılar ardında ne olabilir? 544 00:25:10,210 --> 00:25:12,930 Ben devam Yani eğer ve Burada bu sayıları ortaya, 545 00:25:12,930 --> 00:25:15,180 aslında rastgele sıralanmıştır. 546 00:25:15,180 --> 00:25:17,750 Ve en iyi sen olabilir yapılan, açıkçası, sonuçta, tarafından 547 00:25:17,750 --> 00:25:19,410 En kötü durumda, hepsini kontrol. 548 00:25:19,410 --> 00:25:23,000 Yani, süper-got lucky hangi Biz bir algoritma dediğimiz değil. 549 00:25:23,000 --> 00:25:24,730 Evet, tebrikler. 550 00:25:24,730 --> 00:25:27,010 Eğer yapabilirsen Ama şimdi, mizahı, beni let's--. 551 00:25:27,010 --> 00:25:28,310 Burada bu sekmeye gidelim. 552 00:25:28,310 --> 00:25:31,460 Ve burada açıkça numaraları vardır rastgele bir düzen gibi görünüyor ne, 553 00:25:31,460 --> 00:25:32,280 ve onlar. 554 00:25:32,280 --> 00:25:35,160 Ama şimdi onun yerine iddiası ise Bu, bu kapılar ardında 555 00:25:35,160 --> 00:25:39,070 sıralanır sayılardır. 556 00:25:39,070 --> 00:25:41,780 amaç şimdi de olduğunu Bize numara 50 bulabilirsiniz. 557 00:25:41,780 --> 00:25:45,910 Ama algoritmik bunu, ve Bu konuda gidiyoruz nasıl bize bildirin. 558 00:25:45,910 --> 00:25:48,020 Eğer bulursanız Ve, filmi tutmak. 559 00:25:48,020 --> 00:25:49,520 Bunu, onu geri ver bulmuyorum. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Ben uçlarını kontrol edeceğim Birincisi, orada- belirlemek için 562 00:25:58,112 --> 00:26:02,048 [Güler ve alkışlar] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID MALAN: Burada gitmek. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 En birinde bir göz atalım Ajay adlı öncekilerin, 567 00:26:21,700 --> 00:26:25,450 Oldukça şanslı değildi Sean. 568 00:26:25,450 --> 00:26:28,670 Tamam, burada görev yüzden, Sean, şudur. 569 00:26:28,670 --> 00:26:32,970 Ben bu arkasında gizli olan Kapılar sayı yedi, 570 00:26:32,970 --> 00:26:37,200 ancak bu kapıların bazıları sıkışmış yanı sıra diğer negatif olmayan sayılardır. 571 00:26:37,200 --> 00:26:40,730 Ve amacınız bu düşünmek için sadece bir dizi olarak sayıların üst satır. 572 00:26:40,730 --> 00:26:43,590 Biz parçaları sadece bir dizi olduğunu arkalarında numaraları ile kağıt. 573 00:26:43,590 --> 00:26:47,640 Ve amacınız sadece üst kullanılması, dizi burada, bana numarayı yedi bulabilirsiniz. 574 00:26:47,640 --> 00:26:51,200 Ve biz o eleştirmek için gidiyoruz Bunu yaparken nasıl. 575 00:26:51,200 --> 00:26:52,920 Bize numarayı yedi lütfen bulun. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Hayır. 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 Bu bir tuzak soru değil. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 Bu noktada puanınız çok değil İyi, böylece de devam olabilir. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Hadi. 590 00:27:39,802 --> 00:27:42,510 Açıkçası, ben yardım edemem ama merak ediyorum ne bile düşünüyorsun. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Ben sadece üst satırda alabilir. 592 00:27:44,990 --> 00:27:46,240 DAVID MALAN: Sadece üst satır. 593 00:27:46,240 --> 00:27:47,281 Yani üç sol var. 594 00:27:47,281 --> 00:27:48,310 Yani bana 7 bulabilirsiniz. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [İZLEYİCİ ÖNERİLER bağırır] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Yani bunların her ikisi de inanılmaz çok farklı nedenlerle. 599 00:28:26,130 --> 00:28:29,150 Yani bu nerede biz Bir an önce bıraktığı, 600 00:28:29,150 --> 00:28:32,530 ve burada temel anlayış Bu kapılar numaraları vardı 601 00:28:32,530 --> 00:28:37,390 arkalarında bu ideal, sıralanır için paket yapabilirsin ki 602 00:28:37,390 --> 00:28:39,670 temelde iyi bu ikinci example-- 603 00:28:39,670 --> 00:28:42,380 ve, aslında, o Sean oldu rasgele sayılar ile ilk girişim 604 00:28:42,380 --> 00:28:45,460 gibi before-- ancak en kısa sürede Bu numaralar kriteri olarak, 605 00:28:45,460 --> 00:28:47,980 Telefon defterine gibi çok, Açıkçası ne yapabilirim? 606 00:28:47,980 --> 00:28:50,090 Ya da nasıl bu bilgiyi kaldıraç? 607 00:28:50,090 --> 00:28:51,530 Evet. 608 00:28:51,530 --> 00:28:54,910 >> İZLEYİCİ: Sen [duyulamaz] yarıya gitmek. 609 00:28:54,910 --> 00:28:55,660 DAVID MALAN: Evet. 610 00:28:55,660 --> 00:28:56,160 Kesinlikle. 611 00:28:56,160 --> 00:28:59,680 Yani Ajay adlı ilk içgüdüsü Hatırladığım kadarıyla, uçlarını kontrol etmek, 612 00:28:59,680 --> 00:29:02,320 ve sonra çeşit bitmiş hızlı örnek. 613 00:29:02,320 --> 00:29:05,220 Başladığımız Ama bu daha fazlasını yapmak için yöntemli bu doğrultuda, 614 00:29:05,220 --> 00:29:07,860 ancak belki başlangıç Orta, onlar sıralanır çünkü, 615 00:29:07,860 --> 00:29:10,900 en kısa sürede açığa gibi sayı 16, bu nedenle payi 616 00:29:10,900 --> 00:29:14,850 ve en biz ki- tam yapalım Bu nedenle biliyorum ki 50, bugünün durumunda, 617 00:29:14,850 --> 00:29:16,080 sağa olmak var. 618 00:29:16,080 --> 00:29:18,735 Yani tıpkı haftada sıfır Biz yarısında telefon rehberini yırttı 619 00:29:18,735 --> 00:29:21,490 ve yarısını attı uzakta Sorun, burada da aynı fikir. 620 00:29:21,490 --> 00:29:23,680 Biz bu yarım atabilir Sorunun uzakta. 621 00:29:23,680 --> 00:29:25,730 Ve muhtemelen ne algoritmik yapabilir, 622 00:29:25,730 --> 00:29:28,710 50 olması gerektiğini öğrendikten sonra sağa, her yerde eğer, 623 00:29:28,710 --> 00:29:31,390 ortada, orada deneyin Kalan kapıların. 624 00:29:31,390 --> 00:29:33,450 Tabii ki, 50 daha yüksektir 42 den, yani biz 625 00:29:33,450 --> 00:29:36,060 Bu kalan atmak uzakta sorunun çeyrek, 626 00:29:36,060 --> 00:29:38,510 ve son olarak, tespit 50 gibi bir şey. 627 00:29:38,510 --> 00:29:41,050 Ama sadece gibi Telefon rehberi, bu rakamlar 628 00:29:41,050 --> 00:29:44,560 zaten bize verildi Sıralanan düzen, bize bırakıyor 629 00:29:44,560 --> 00:29:47,450 sorusuyla, nasıl yapmak siralanacak şeyler olsun? 630 00:29:47,450 --> 00:29:49,640 Ve açıkçası, ne pahasına? 631 00:29:49,640 --> 00:29:51,390 Olması gereken bir şey var Telefon rehberini teslim 632 00:29:51,390 --> 00:29:54,810 ve daha sonra bularak arkadaşlarınızı etkilemek Sağ gerçekten hızlı bir telefon numarası,? 633 00:29:54,810 --> 00:29:58,520 Bulmak için 32 sayfalarını yırtarak 4 milyar sayfaların dışında bir kişi, 634 00:29:58,520 --> 00:30:00,470 biz bir uç bir örnek olduğunu söyledi. 635 00:30:00,470 --> 00:30:03,320 Ama ne kadar zaman sürdü Verizon bu telefon rehberini sıralamak için? 636 00:30:03,320 --> 00:30:06,170 Bizi sürdü ne kadar zaman Bu yedi numara sıralamak için? 637 00:30:06,170 --> 00:30:10,110 Yani biz ettik bir soru Şimdiye kadar tamamen göz ardı. 638 00:30:10,110 --> 00:30:12,330 >> Peki şimdi bu soruya cevap verelim. 639 00:30:12,330 --> 00:30:15,920 Ve şimdi tüm filmler bitti, ama biz biraz stres topları var. 640 00:30:15,920 --> 00:30:19,480 Sekiz gönüllü söylüyorlar, varsa Burada bizi katılmadan misin değil misin? 641 00:30:19,480 --> 00:30:24,100 Nasıl, en önde gidelim ve yapılacak Senin dört, burada üç? 642 00:30:24,100 --> 00:30:25,290 Bazı yeni yüzler alın. 643 00:30:25,290 --> 00:30:27,220 Ve orada sizin dört? 644 00:30:27,220 --> 00:30:30,760 Ve en değil önyargı izin şimdi-- ötürü-- ve Burada ucunda üzerinde sayı sekiz. 645 00:30:30,760 --> 00:30:32,060 Hadi gel. 646 00:30:32,060 --> 00:30:32,560 Tamam. 647 00:30:32,560 --> 00:30:37,480 Yani biz burada için ne Senin her bir sayıdır. 648 00:30:37,480 --> 00:30:40,055 Nereye gitmek isterseniz Önümüzdeki bu numarayı almak. 649 00:30:40,055 --> 00:30:40,763 Adınız ne? 650 00:30:40,763 --> 00:30:41,950 >> ARTIE: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID MALAN: Artie, tamam. 652 00:30:43,100 --> 00:30:44,297 Sen 1 numara sensin. 653 00:30:44,297 --> 00:30:45,310 >> AMİN: Amin. 654 00:30:45,310 --> 00:30:46,060 DAVID MALAN: Amin. 655 00:30:46,060 --> 00:30:46,820 David. 656 00:30:46,820 --> 00:30:47,530 Sen 2 numaralı konum. 657 00:30:47,530 --> 00:30:49,100 Ben el gibi, go ahead Eğer kağıt yaprak, 658 00:30:49,100 --> 00:30:52,130 müzik önünde kendinizi sıraya Orada aynı sırada duruyor. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Merhaba, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID MALAN: Andy, seni görmek güzel. 661 00:30:53,970 --> 00:30:54,520 Sayı 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID MALAN: Jacob, 4 numaralı. 664 00:30:56,760 --> 00:30:57,549 Aramıza hoşgeldin. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grant. 666 00:30:58,090 --> 00:30:58,881 DAVID MALAN: Grant. 667 00:30:58,881 --> 00:31:00,348 Sayı 5. 668 00:31:00,348 --> 00:31:01,200 >> ALANNA: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID MALAN: Alanna, 6 numaralı. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID MALAN: Frances, 7 numara. 672 00:31:04,880 --> 00:31:05,200 Ve? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID MALAN: Rachel, sayı 8. 675 00:31:06,815 --> 00:31:07,100 Tamam. 676 00:31:07,100 --> 00:31:08,766 Devam edin ve bu sırada kendinizi olsun. 677 00:31:08,766 --> 00:31:11,440 Bana Kalan birini koyalım Müzik yerde durmak. 678 00:31:11,440 --> 00:31:13,670 Nerede bir stand gerekiyor? 679 00:31:13,670 --> 00:31:14,170 TAMAM MI. 680 00:31:14,170 --> 00:31:18,710 Devam edin ve sadece numaraları koymak nerede seyirci onları görebilirsiniz, 681 00:31:18,710 --> 00:31:20,340 Müzik dışa dönük duruyor. 682 00:31:20,340 --> 00:31:27,240 Ve umarım, bizim ilk aklı kontrol ötürü-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Bir dakika bekle. 685 00:31:29,070 --> 00:31:31,140 Biz 8 yok. 686 00:31:31,140 --> 00:31:35,180 Ben sizi tahliye etmek gerekir nasılsa örnek. 687 00:31:35,180 --> 00:31:35,680 Hayır. 688 00:31:35,680 --> 00:31:36,940 Hayır, sorun değil. 689 00:31:36,940 --> 00:31:37,890 Görelim. 690 00:31:37,890 --> 00:31:38,880 Biz bunu yapabilirsiniz. 691 00:31:38,880 --> 00:31:39,440 Yanında olmak. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Biz oraya gitmek. 694 00:31:45,740 --> 00:31:46,800 Doğru. 695 00:31:46,800 --> 00:31:47,360 Tamam. 696 00:31:47,360 --> 00:31:50,260 Yani, şimdi biz 8, 1, 3 7, 5 var. 697 00:31:50,260 --> 00:31:50,760 TAMAM MI. 698 00:31:50,760 --> 00:31:51,360 Mükemmel. 699 00:31:51,360 --> 00:31:54,400 >> Yani eldeki soru olarak, bir ne pahasına ve hangi yöntem vasıtasıyla, 700 00:31:54,400 --> 00:31:58,580 biz aslında burada bu numaraları sıralayabilirsiniz biz tür geriye çalışabilir, böylece, 701 00:31:58,580 --> 00:32:02,759 sonuçta, ve decide-- o gerçekten Etkileyici, gerçekten verimli, 702 00:32:02,759 --> 00:32:04,550 Ben bölmek olduğunu ve Bir telefon rehberi fethetmek? 703 00:32:04,550 --> 00:32:06,716 O gerçekten verimli mi Ben bölmek ve fethetmek için 704 00:32:06,716 --> 00:32:08,600 bu dijital adet Gemide kağıt, 705 00:32:08,600 --> 00:32:14,500 bize bir maliyeti olacak belki zaman ya da enerji veya CPU döngüleri servet 706 00:32:14,500 --> 00:32:17,340 aslında bizim veri almak için Bazı sıralı düzene? 707 00:32:17,340 --> 00:32:18,930 Yani bu soruyu soralım. 708 00:32:18,930 --> 00:32:22,077 >> Peki ilk kapalı, bu numaraları hemen hemen rastgele sırayla, 709 00:32:22,077 --> 00:32:24,160 ve ben teklif gidiyorum bir algoritma veya işlem 710 00:32:24,160 --> 00:32:25,970 hangi biz bu millet sıralayabilirsiniz. 711 00:32:25,970 --> 00:32:28,100 Ben yaklaşmaya gidiyorum Bu oldukça safça. 712 00:32:28,100 --> 00:32:30,730 Ve ben tanımak için gidiyorum Benim için bir çok çeşit olduğunu 713 00:32:30,730 --> 00:32:32,890 etrafında fikrimi sarmak için Bütün veriler aynı anda ayarlanır. 714 00:32:32,890 --> 00:32:33,640 Ama biliyor musun? 715 00:32:33,640 --> 00:32:37,450 Biraz yapmaya gidiyorum çok basit marjinal giderir. 716 00:32:37,450 --> 00:32:41,152 4 ve 2 eğer, sipariş dışında gol 8 kadar üzerinde 1'den gitmektir. 717 00:32:41,152 --> 00:32:41,860 Peki biliyor musun? 718 00:32:41,860 --> 00:32:43,776 Sana sahip gidiyorum Eğer geçerseniz çocuklar, takas 719 00:32:43,776 --> 00:32:46,380 fiziksel konumları ve kağıt senin adettir. 720 00:32:46,380 --> 00:32:47,894 Şimdi 4 ve 6, bu sırayla yer almaktadır. 721 00:32:47,894 --> 00:32:49,060 Ben o olacak terk edeceğim. 722 00:32:49,060 --> 00:32:50,227 6 ve 8, bu sırayla yer almaktadır. 723 00:32:50,227 --> 00:32:51,185 Onları olmasını terk edecek. 724 00:32:51,185 --> 00:32:52,170 Bozuk 8 and1. 725 00:32:52,170 --> 00:32:54,790 İki takas sakıncası olmazdı. 726 00:32:54,790 --> 00:32:57,300 Şimdi 8 ve 3, siz takas eğer. 727 00:32:57,300 --> 00:32:59,320 8 ve 7, siz takas eğer. 728 00:32:59,320 --> 00:33:01,790 Ve 8 ve 5, siz takas eğer. 729 00:33:01,790 --> 00:33:03,980 >> Şimdi, ben bittim? 730 00:33:03,980 --> 00:33:05,200 Hayır, tabii ki değil. 731 00:33:05,200 --> 00:33:07,880 Ama ben yaptık daha iyi bir durum, değil mi? 732 00:33:07,880 --> 00:33:09,430 Adın neydi, sayı 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID MALAN: Yani Rachel vardır etkili bir oldukça uzak kadar kabarmış, 735 00:33:12,850 --> 00:33:15,660 sonuna kadar tüm yol Burada sayıların benim dizi. 736 00:33:15,660 --> 00:33:17,310 Ve böylece sorun tür çözüldü. 737 00:33:17,310 --> 00:33:21,670 Şimdi, açıkça, 2 hâlâ gerekiyor Biraz hareket ve 4 ile 6 ve 1. 738 00:33:21,670 --> 00:33:24,420 Ama aldık görünüyor çözüm yakın küçük. 739 00:33:24,420 --> 00:33:26,790 Yani bu aynı uygulayalım Yine naif sezgisel. 740 00:33:26,790 --> 00:33:27,690 2 ve 4, tamam. 741 00:33:27,690 --> 00:33:28,810 4 ve 6 Tamam. 742 00:33:28,810 --> 00:33:29,930 6 ve 1 mm mm. 743 00:33:29,930 --> 00:33:32,230 En takas edelim. 744 00:33:32,230 --> 00:33:33,200 6 ve 3 mm mm. 745 00:33:33,200 --> 00:33:34,420 En takas edelim. 746 00:33:34,420 --> 00:33:35,580 6 ve 7 Tamam. 747 00:33:35,580 --> 00:33:36,590 7 ve 5, hayır. 748 00:33:36,590 --> 00:33:37,790 En takas edelim. 749 00:33:37,790 --> 00:33:38,470 Ve şimdi 7 ve 8. 750 00:33:38,470 --> 00:33:39,862 Ve senin adın neydi? 751 00:33:39,862 --> 00:33:40,570 FRANCES: Frances. 752 00:33:40,570 --> 00:33:41,445 DAVID MALAN: Frances. 753 00:33:41,445 --> 00:33:44,230 Yani şimdi Frances bile daha iyi olduğunu pozisyon, şimdi 7 ve 8 çünkü 754 00:33:44,230 --> 00:33:46,440 doğru üstüne kadar kabarmış edilir. 755 00:33:46,440 --> 00:33:47,510 Yani 2 ve 4, tamam. 756 00:33:47,510 --> 00:33:48,720 4 ve 1, diyelim takas. 757 00:33:48,720 --> 00:33:50,410 4 ve 3, diyelim takas. 758 00:33:50,410 --> 00:33:51,550 4 ve 6, iyisin. 759 00:33:51,550 --> 00:33:53,340 6 ve 5, diyelim takas. 760 00:33:53,340 --> 00:33:54,590 Ve şimdi bu adamlar iyi. 761 00:33:54,590 --> 00:33:55,780 Biz neredeyse oradayız. 762 00:33:55,780 --> 00:33:57,706 2 ve 1, sıra dışı, yani takas. 763 00:33:57,706 --> 00:33:59,080 Ve şimdi bana bir sağlamlık denetimi yapalım. 764 00:33:59,080 --> 00:34:03,080 2 ve 3, 3 ve 4, 4 ve 5, 5 ve 6, 6 ve 7, 8. 765 00:34:03,080 --> 00:34:05,060 Tamam, bu yüzden bitti. 766 00:34:05,060 --> 00:34:09,310 >> Ama ne maliyeti yaptım ben Burada bu sayıları sıralamak? 767 00:34:09,310 --> 00:34:13,960 Peki, kaç adım potansiyel ben yaptım Bu millet sıralarken almak? 768 00:34:13,960 --> 00:34:15,710 Peki, biz geri o soruya geleceğiz. 769 00:34:15,710 --> 00:34:18,030 Ama açıkçası, sen var eğer Biraz bıkkın, işte 770 00:34:18,030 --> 00:34:22,270 tür bu değildi ki ortaya belki de en verimli algoritma. 771 00:34:22,270 --> 00:34:25,230 Ve gerçekten de, açıkçası, ben Terliyorum daha ileri geri yürüme. 772 00:34:25,230 --> 00:34:26,639 Bu özellikle verimli gelmiyordu. 773 00:34:26,639 --> 00:34:27,805 Yani başka bir şey deneyelim. 774 00:34:27,805 --> 00:34:31,870 Siz sıfırlamak olsaydı Bu sekiz değerlerine kendinizi. 775 00:34:31,870 --> 00:34:32,969 Aferin. 776 00:34:32,969 --> 00:34:36,570 >> Sadece için, dijital bir göz atalım Bir an biz, başka bir şey deneyin önce 777 00:34:36,570 --> 00:34:38,179 Sadece ne oldu. 778 00:34:38,179 --> 00:34:41,330 Burada yukarı, bir görmek üzereyiz Bu sekiz insan görselleştirme 779 00:34:41,330 --> 00:34:44,719 bu sayede, mavi ve kırmızı barlar sayıları temsil eder. 780 00:34:44,719 --> 00:34:46,670 uzun boylu bar, numara büyük. 781 00:34:46,670 --> 00:34:48,510 kısa bar, numara küçük. 782 00:34:48,510 --> 00:34:51,560 Ve ne görmek için gidiyoruz olduğunu Bunlardan sekiz daha fazla rasgele düzeni. 783 00:34:51,560 --> 00:34:55,830 Bu çubuklar görmek için gidiyoruz Aynı algoritma sıralama kriteri alıyorum, 784 00:34:55,830 --> 00:34:59,890 veya, talimatlar seti hangi Biz kabarcık sıralama bundan böyle arayacağım. 785 00:34:59,890 --> 00:35:04,000 Yani, ikinci ya da bu yüzden her fark İki bar, kırmızı aydınlatan vardır 786 00:35:04,000 --> 00:35:05,590 bilgisayar tarafından karşılaştırılır ediliyor. 787 00:35:05,590 --> 00:35:08,630 Ve sonra, eğer büyük bir bar ve küçük bar, düzenin dışında 788 00:35:08,630 --> 00:35:11,220 Onlar benim için takas ediliyor. 789 00:35:11,220 --> 00:35:15,120 >> Şimdi bu inanılmaz sıkıcı Kesinlikle, bu seyretmek, 790 00:35:15,120 --> 00:35:18,630 Çok uzun, ama fark sağa hareket büyük barlar takeaway-- 791 00:35:18,630 --> 00:35:20,460 sola hareket küçük barlar. 792 00:35:20,460 --> 00:35:23,380 Şimdi bu süreci iptal edelim ve bu hızlandırmak 793 00:35:23,380 --> 00:35:27,330 çok daha hızlı olacak, bu yüzden biz için Neyin üst düzey bir anlamda olsun, 794 00:35:27,330 --> 00:35:29,970 Gerçekten, kabarcık sıralama yapıyor. 795 00:35:29,970 --> 00:35:33,150 Nitekim, bu kadar köpüren Listenin sağ tarafında, 796 00:35:33,150 --> 00:35:35,260 ya dizi, büyük barlar. 797 00:35:35,260 --> 00:35:40,020 Ve tersine, küçük barlar sola aşağı onların yolunu köpüren, 798 00:35:40,020 --> 00:35:42,950 daha hızlı bir tempoda da olsa daha biz daha önce yaptık. 799 00:35:42,950 --> 00:35:45,850 Yani, sert insanlar ile görmek, ama görsel o gerçekten ne var 800 00:35:45,850 --> 00:35:46,540 oluyordu. 801 00:35:46,540 --> 00:35:49,110 >> Ama temelde bir deneyelim Şimdi farklı bir yaklaşım. 802 00:35:49,110 --> 00:35:52,387 En farklı deneyelim algoritma size sahip sayede 803 00:35:52,387 --> 00:35:59,640 adamlar bu orijinal başlayacak Bu düzen burada pozisyonları. 804 00:35:59,640 --> 00:36:00,827 Ve şimdi devam edelim. 805 00:36:00,827 --> 00:36:02,910 Ve ben bir şey yapacağım Hatta basit, değil mi? 806 00:36:02,910 --> 00:36:06,710 Geriye dönüp bakıldığında, yine çiftler halinde takas ve yine, neredeyse küçük bir akıllı. 807 00:36:06,710 --> 00:36:10,460 , En daha safça şeyler yapalım nerede bu millet sıralamak isterseniz, 808 00:36:10,460 --> 00:36:12,560 bana sadece seyir devam edelim En küçük eleman için. 809 00:36:12,560 --> 00:36:14,570 Yani şimdi, 4 Ben gördüğüm en küçük sayı. 810 00:36:14,570 --> 00:36:15,695 Ben hatırlıyorum gidiyorum. 811 00:36:15,695 --> 00:36:17,750 Hayır, 2 iyidir, ve unutmayın. 812 00:36:17,750 --> 00:36:20,730 1 bile küçük. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 TAMAM MI. 815 00:36:22,470 --> 00:36:23,750 Şehre adınız neydi? 816 00:36:23,750 --> 00:36:24,400 >> ARTIE: Artie. 817 00:36:24,400 --> 00:36:24,610 >> DAVID MALAN: Artie. 818 00:36:24,610 --> 00:36:25,460 Yani, Artie, devam edin. 819 00:36:25,460 --> 00:36:27,043 Ben çizgi dışına çekmeye gidiyorum. 820 00:36:27,043 --> 00:36:28,400 Buraya gel olsaydı. 821 00:36:28,400 --> 00:36:30,790 Ve ben onun için yer açmak gerekir. 822 00:36:30,790 --> 00:36:32,040 Biz burada bir karar noktası var. 823 00:36:32,040 --> 00:36:36,000 Burada Artie için yer açmak nasıl 1 numara aittir başında? 824 00:36:36,000 --> 00:36:36,770 >> İZLEYİCİ: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID MALAN: Tamam, biz Herkesi kayması olabilir. 826 00:36:38,950 --> 00:36:40,860 Ama optimizasyon öneriyoruz. 827 00:36:40,860 --> 00:36:43,410 Bu biraz can sıkıcı hissediyor Bana dört kişiyi sormak için 828 00:36:43,410 --> 00:36:44,620 tüm yol aşağı taşımak için. 829 00:36:44,620 --> 00:36:45,520 Başka ne yapabilirim? 830 00:36:45,520 --> 00:36:46,360 >> İZLEYİCİ: Bunları geçin. 831 00:36:46,360 --> 00:36:46,850 >> DAVID MALAN: Bunları geçin. 832 00:36:46,850 --> 00:36:47,900 Ve senin adın neydi? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID MALAN: Jacob, hareket. 835 00:36:50,330 --> 00:36:54,440 Çok daha verimli adil olması için Artie ile Yakup takas yerleri, 836 00:36:54,440 --> 00:36:56,710 zorlamak yerine Bu millet dört, 837 00:36:56,710 --> 00:36:58,734 için, çok teşekkür ederim onların doğru pozisyon. 838 00:36:58,734 --> 00:37:01,150 Şimdi ne Artie hakkında güzel, onun doğru pozisyonda olduğunu. 839 00:37:01,150 --> 00:37:02,060 Tekrar yapalım. 840 00:37:02,060 --> 00:37:03,730 2, ben gördüğüm en küçük sayı. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 TAMAM MI. 843 00:37:06,190 --> 00:37:07,467 2 kesinlikle küçüğüdür. 844 00:37:07,467 --> 00:37:08,550 Herhangi bir işi yapmak zorunda değilsiniz. 845 00:37:08,550 --> 00:37:09,320 Tekrar yapalım. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Küçük? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Hayır. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ooh. 852 00:37:12,220 --> 00:37:13,420 Bana 4 unutmayalım. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Bana 3 unutmayalım. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Ben ettik küçük sayı Bu geçişte görülen 3. 857 00:37:18,490 --> 00:37:20,340 Eğer dışarı gel istiyorum. 858 00:37:20,340 --> 00:37:21,986 Nereye koymak için gidiyoruz? 859 00:37:21,986 --> 00:37:22,860 Ve senin adın ne? 860 00:37:22,860 --> 00:37:23,530 >> ALANNA: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID MALAN: Alanna, biz konum tahliye etmek zorunda olacak. 862 00:37:25,780 --> 00:37:28,670 Ama bu, daha verimli Sadece iki kişi takas etmek, 863 00:37:28,670 --> 00:37:31,850 birden fazla kişi olması daha Aslında üzerinde kaçınmak. 864 00:37:31,850 --> 00:37:32,850 Şimdi yine bu yapalım. 865 00:37:32,850 --> 00:37:34,980 Ben 4 seçeneğini, böylece dışarı gelip gidiyorum. 866 00:37:34,980 --> 00:37:36,540 Ve kim taşımak olacak? 867 00:37:36,540 --> 00:37:37,750 Sayı 8, tabii. 868 00:37:37,750 --> 00:37:40,260 Ben şimdi sayı 5 bulursanız, dışarı gel. 869 00:37:40,260 --> 00:37:42,104 Sayı 8 tekrar tahliye almak için gidiyor. 870 00:37:42,104 --> 00:37:43,770 Ben şimdi yerinde sayı 6 bulmaya gidiyorum. 871 00:37:43,770 --> 00:37:44,410 Yerine 7. 872 00:37:44,410 --> 00:37:45,080 Yerine 8. 873 00:37:45,080 --> 00:37:48,590 >> Biz sadece şimdi ne yaptım Seçim sıralama denen şey, 874 00:37:48,590 --> 00:37:52,560 Bu görselleştirmek ve eğer, bu kadar biraz farklı hissediyorum olacak. 875 00:37:52,560 --> 00:37:56,800 En önde ve bundan gidelim Menü burada, bu visualization-- 876 00:37:56,800 --> 00:38:02,920 en, Firefox hadi amaçlara yönelik bu değiştirelim. 877 00:38:02,920 --> 00:38:07,610 Seçimi tür bu değiştirelim. 878 00:38:07,610 --> 00:38:11,830 Ve en önce olduğu gibi hızlandırmak izin, ve şimdi görselleştirme başlatın. 879 00:38:11,830 --> 00:38:13,990 Ve bu algoritma vardır o bir farklı hissediyorum. 880 00:38:13,990 --> 00:38:16,480 Her tekrarında, açıkçası, hatta daha basittir. 881 00:38:16,480 --> 00:38:18,385 Ben sadece küçük elemanı seçerek ediyorum. 882 00:38:18,385 --> 00:38:21,510 Şimdi, açıkçası, ben biraz şanslı Zaman, ki süper-hızlı sıralanır. 883 00:38:21,510 --> 00:38:22,660 elemanlar rasgele idi. 884 00:38:22,660 --> 00:38:25,520 Bu gibi biz sonunda olacak, değil temelde daha hızlı, bkz. 885 00:38:25,520 --> 00:38:29,400 Ama üçüncü ve son görelim Neler olarak burada yaklaşım. 886 00:38:29,400 --> 00:38:36,230 Yani öncesinde gidelim ve sizi reset son bir kez burada bu sırada olmak. 887 00:38:36,230 --> 00:38:38,450 >> Ve şimdi, ben gidiyorum biraz daha zeki 888 00:38:38,450 --> 00:38:40,220 sadece bizim algoritmaları yuvarlak dışarı. 889 00:38:40,220 --> 00:38:41,230 Bunu yapmak için gidiyorum. 890 00:38:41,230 --> 00:38:43,140 Ben gidemem gidiyorum ileri ve geri çok. 891 00:38:43,140 --> 00:38:44,900 Açıkçası, ben yoruldum Bütün bu şaryo. 892 00:38:44,900 --> 00:38:47,691 Ben sadece ben ne alacağım Listenin başında verilen, 893 00:38:47,691 --> 00:38:49,460 ve ben sıralamak gidiyorum o zaman ve orada. 894 00:38:49,460 --> 00:38:50,140 Yani burada biz. 895 00:38:50,140 --> 00:38:51,030 Sayı 4. 896 00:38:51,030 --> 00:38:53,680 Ben numarayı eklemek için gidiyorum Sıralı liste halinde 4. 897 00:38:53,680 --> 00:38:54,180 Bitti. 898 00:38:54,180 --> 00:38:58,300 Ben şimdi iddia ve sadece bu daha yapmak için net, benim listesinin bu kısmı sıralanır. 899 00:38:58,300 --> 00:39:02,610 Aptalca bir iddia tür, ama aslında 4 boyutunda bir listesinde sıralanır. 900 00:39:02,610 --> 00:39:04,210 Şimdi, ben 2 sayısına almaya gidiyorum. 901 00:39:04,210 --> 00:39:07,670 Sayı 2 Ben şimdi gidiyorum doğru yere yerleştirin. 902 00:39:07,670 --> 00:39:08,680 Peki nerede 2 aittir? 903 00:39:08,680 --> 00:39:09,824 Açıkçası, buraya. 904 00:39:09,824 --> 00:39:11,490 Yani go ahead ve eğer yapabilirsen, geri hareket ettirin. 905 00:39:11,490 --> 00:39:14,406 Ve neden siz sadece almak yok Müzik seninle bu sefer duruyor. 906 00:39:14,406 --> 00:39:17,020 Ve zorla yapalım sizi eklemek Listenin başında içine. 907 00:39:17,020 --> 00:39:17,936 Yani biraz daha fazla iş. 908 00:39:17,936 --> 00:39:20,890 Ben, etrafta Jacob taşımak zorunda kaldı ve senin adın ne? 909 00:39:20,890 --> 00:39:21,420 >> AMİN: Amin. 910 00:39:21,420 --> 00:39:22,270 >> DAVID MALAN: Amin. 911 00:39:22,270 --> 00:39:24,350 Ama en azından ben ileri geri gitmedi. 912 00:39:24,350 --> 00:39:25,739 Ben gitmek gibi ben sadece şeyler alıyorum. 913 00:39:25,739 --> 00:39:27,530 Ben sadece onları takacağım doğru yerde. 914 00:39:27,530 --> 00:39:29,220 6, bu aslında oldukça kolaydır. 915 00:39:29,220 --> 00:39:31,510 Eğer en, orada sizi eklemek edelim sadece biraz üzerinde taşımak istedim. 916 00:39:31,510 --> 00:39:32,870 Sayı 8, aynı zamanda oldukça kolay. 917 00:39:32,870 --> 00:39:33,741 Sağ orada. 918 00:39:33,741 --> 00:39:34,240 Kahretsin. 919 00:39:34,240 --> 00:39:37,590 Sayı 1 yapamayız sadece Burada Amin ile takas, 920 00:39:37,590 --> 00:39:39,340 çünkü gidiyor karışıklık sipariş. 921 00:39:39,340 --> 00:39:40,660 Yani biz biraz daha akıllı olmak zorunda. 922 00:39:40,660 --> 00:39:42,770 Yani, Artie, eğer olabilir Bir an için yedekleyin. 923 00:39:42,770 --> 00:39:46,550 , En önde gidip şimdi vardiya Let Önceki algoritmalar farklı olarak, 924 00:39:46,550 --> 00:39:50,910 Artie'den yer açmak için Burada başında. 925 00:39:50,910 --> 00:39:54,690 Günün sonunda Yani, ben tür değilim Ben daha önce önlemek istediğini yapıyor. 926 00:39:54,690 --> 00:39:57,770 Ve bu yüzden benim algoritması tür bir, entelektüel, tersine 927 00:39:57,770 --> 00:39:59,070 başlangıçta ne gelen. 928 00:39:59,070 --> 00:40:01,240 Ben sadece vites yapıyorum farklı bir noktada. 929 00:40:01,240 --> 00:40:02,291 Şimdi 3 kulüpler. 930 00:40:02,291 --> 00:40:02,790 Lanet olsun. 931 00:40:02,790 --> 00:40:04,039 Biz yine daha fazla iş yapmak zorunda. 932 00:40:04,039 --> 00:40:05,060 Yani seni dışarı itmek verelim. 933 00:40:05,060 --> 00:40:09,360 En geçelim 8, 6, 4-- Oh-- oh ve 3 sağ oraya gitmek için gidiyor. 934 00:40:09,360 --> 00:40:11,490 Bu sefer en hafif tasarruf öylesine. 935 00:40:11,490 --> 00:40:13,100 7 değil, çok iş yapılacak. 936 00:40:13,100 --> 00:40:15,370 Eğer pop istiyorsanız Yani geri, seni eklemek edelim. 937 00:40:15,370 --> 00:40:17,440 Ve son olarak, 5, eğer geri pop istiyorum, biz 938 00:40:17,440 --> 00:40:22,610 Seni kaydırmaya sana ihtiyacım var, beş kadar, yerinde olduğunu. 939 00:40:22,610 --> 00:40:25,670 >> Peki şimdi bu görmek için grafiksel yüksek düzeyde, 940 00:40:25,670 --> 00:40:31,080 Şimdi bu algoritma yapalım görselleştirme bir ek süre. 941 00:40:31,080 --> 00:40:33,580 Yani bu bizim ekleme tür çağırır. 942 00:40:33,580 --> 00:40:37,700 Biz sadece çalıştırın edeceğiz hızlı ve burada başlatın. 943 00:40:37,700 --> 00:40:39,580 Ve o da, farklı bir havası vardır. 944 00:40:39,580 --> 00:40:42,180 Bu tür iyi gidiyor ve Daha iyi, ama mükemmel asla 945 00:40:42,180 --> 00:40:44,630 Ben bu boşlukları ve pürüzsüz gitmek kadar. 946 00:40:44,630 --> 00:40:47,860 Çünkü, yine, ben sadece alıyorum ne Ben soldan sağa verilen ediyorum. 947 00:40:47,860 --> 00:40:50,350 Yani o kadar şanslı alamadım Bu her şey mükemmeldi. 948 00:40:50,350 --> 00:40:54,190 Bu az vardı bu yüzden Biz zamanla sabit mispositions. 949 00:40:54,190 --> 00:40:58,890 >> Peki bu algoritmaların tüm görünüyor biraz farklı hızlarda çalışır. 950 00:40:58,890 --> 00:41:02,030 Aslında, hangi olduğunu söyleyebilirim En iyi ya da bugüne kadar en hızlı? 951 00:41:02,030 --> 00:41:03,450 Kabarcık sıralama, ilk? 952 00:41:03,450 --> 00:41:05,000 Seçim sıralama, ikinci? 953 00:41:05,000 --> 00:41:08,450 Yerleştirme sıralama, üçüncü? 954 00:41:08,450 --> 00:41:10,710 Ben bazı seçim türlü duyuyorum. 955 00:41:10,710 --> 00:41:13,280 Diğer düşünceler? 956 00:41:13,280 --> 00:41:16,880 >> Bu yüzden çıkıyor Bu algoritmaların hepsi 957 00:41:16,880 --> 00:41:22,400 gibi temelde sadece verimli gibi, tersine, her bir other-- veya 958 00:41:22,400 --> 00:41:25,980 birbirlerine gibi verimsiz, Biz temelde yapabiliriz çünkü 959 00:41:25,980 --> 00:41:28,120 Üç daha Bu algoritmaların. 960 00:41:28,120 --> 00:41:29,990 Ve bu bir beyaz yalan biraz da bu. 961 00:41:29,990 --> 00:41:32,580 Ben verimli derken veya verimsiz olarak, 962 00:41:32,580 --> 00:41:35,040 en az içindir n süper-büyük değerler. 963 00:41:35,040 --> 00:41:38,450 Biz burada sadece sekiz kişi var olduğunda, ya da belki ekranda 50 ya da öylesine barlar, 964 00:41:38,450 --> 00:41:41,645 kesinlikle farklılıkları fark edeceksiniz Bu üç algoritma bulunuyor. 965 00:41:41,645 --> 00:41:44,020 Ama n olarak, kişi sayısı, veya sayıların sayısı, 966 00:41:44,020 --> 00:41:46,350 veya telefonda kişilerin sayısı Kitap, veya web sayfalarının sayısı 967 00:41:46,350 --> 00:41:48,230 Google'ın veritabanında , büyük ve daha büyük olur 968 00:41:48,230 --> 00:41:51,650 göreceğiz ki bu her üç algoritmalar aslında oldukça kötü. 969 00:41:51,650 --> 00:41:54,060 Ve biz temelde yapabiliriz Bundan daha iyi. 970 00:41:54,060 --> 00:41:56,830 >> En nihayet, bir göz atalım ne bu algoritmalar olabilir de 971 00:41:56,830 --> 00:41:59,520 gibi ses Birkaç başkalarının bağlam 972 00:41:59,520 --> 00:42:03,550 hem de bu yolu ile Burada görselleştirme 973 00:42:03,550 --> 00:42:06,860 Bu bize tanıtacak bir algoritma numarası. 974 00:42:06,860 --> 00:42:10,330 En go ahead ve tebrik edelim bunların hepsi burada bizim katılımcılar, 975 00:42:10,330 --> 00:42:11,690 kendilerini çok iyi sıralanır. 976 00:42:11,690 --> 00:42:15,124 Eğer bir ayrılık hediye almak istiyorum. 977 00:42:15,124 --> 00:42:16,540 Siz de kendi numaralarını tutabilirsiniz. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Ve göreceksiniz ne, ya da daha doğrusu, şimdi, duymak 980 00:42:22,520 --> 00:42:25,710 olduğunu biz sesler koymak gibi Bu çubukların her birinin 981 00:42:25,710 --> 00:42:28,660 ve yazılım ile ilişkilendirmek Sesin bir çok farklı frekans, 982 00:42:28,660 --> 00:42:33,970 Eğer zihniniz daha audioly sarabilirsiniz Bunlardan her ne etrafında 983 00:42:33,970 --> 00:42:34,470 gibi görünmek. 984 00:42:34,470 --> 00:42:39,325 hangi ilk ekleme tür 985 00:42:39,325 --> 00:42:44,275 >> [SAYISI] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Bu kabarcık tür. 988 00:42:49,720 --> 00:42:54,175 >> [SAYISI] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Seçim sıralama. 991 00:43:18,222 --> 00:43:22,596 >> [SAYISI] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Birleştirme sıralama denilen şey. 994 00:43:35,150 --> 00:43:38,140 >> [SAYISI] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Cüce sıralaması. 997 00:43:51,278 --> 00:43:56,390 >> [SAYISI] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Bu CS50 için var. 1000 00:44:09,430 --> 00:44:13,360 Çarşamba günü görecek. 1001 00:44:13,360 --> 00:44:16,671 >> ANLATICI: Ve şimdi, "Derin DAV Farnham tarafından Düşünceleri, ". 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Neden bir döngü için? 1004 00:44:21,590 --> 00:44:23,200 Neden daha iyi yapmak? 1005 00:44:23,200 --> 00:44:25,970 Ben beş döngü yapmak istiyorum. 1006 00:44:25,970 --> 00:44:28,720 >> [KAHKAHA]