1 00:00:00,000 --> 00:00:00,030 2 00:00:00,030 --> 00:00:00,460 >> DAVID MALAN: Pekala. 3 00:00:00,460 --> 00:00:01,094 Biz geri döndü. 4 00:00:01,094 --> 00:00:04,260 programlama bu segmentte ne yani Ben şeylerin bir karışımıdır yapmak düşündüm. 5 00:00:04,260 --> 00:00:06,340 Bir, biraz yapmak bir şey eller-on, 6 00:00:06,340 --> 00:00:08,690 Bir daha oynak kullanarak da olsa programlama environment-- 7 00:00:08,690 --> 00:00:11,620 gösterebileceği bir fikirlerin tam çeşitleri 8 00:00:11,620 --> 00:00:14,220 Biz bahsediyoruz oldum ama biraz daha resmen. 9 00:00:14,220 --> 00:00:18,200 İki, bazı bakmak Daha fazla teknik yolları 10 00:00:18,200 --> 00:00:21,520 Bir programcı aslında çözecek arama sorunu gibi sorunlar 11 00:00:21,520 --> 00:00:24,530 Daha önce de baktı ki ve Ayrıca daha temelden 12 00:00:24,530 --> 00:00:26,020 sıralama ilginç bir problem. 13 00:00:26,020 --> 00:00:28,840 >> Biz sadece olsun gitmek farz Bu telefon rehberi sıralama olduğunu, 14 00:00:28,840 --> 00:00:31,980 ama tek başına aslında bir tür bir çok farklı şekillerde sert bir sorun 15 00:00:31,980 --> 00:00:32,479 bunu çözmek için. 16 00:00:32,479 --> 00:00:34,366 Bu yüzden biz bu kullanacağız sorunların bir sınıfı 17 00:00:34,366 --> 00:00:36,740 şeylerin temsilcisi olduğunu Genel olarak çözülebilir. 18 00:00:36,740 --> 00:00:38,980 Ve sonra biz konuşacağız bazı ayrıntılı olarak ne hakkında 19 00:00:38,980 --> 00:00:42,360 veri denir structures-- bağlantılı listeler gibi meraklısı yolları 20 00:00:42,360 --> 00:00:46,290 ve hash tabloları ve ağaçlar o Bir programcı aslında olur 21 00:00:46,290 --> 00:00:48,890 kullanımı, genellikle, kullanımı ve Bir beyaz tahta üzerinde boyamak için 22 00:00:48,890 --> 00:00:51,840 bir resmi şeyin o uygulanması için öngörülüyor 23 00:00:51,840 --> 00:00:52,980 bazı yazılım parçası. 24 00:00:52,980 --> 00:00:55,130 >> Yani ilk bölümü eller yapalım. 25 00:00:55,130 --> 00:01:00,090 Yani sadece kirli ellerini almak çevre denir scratch.mit.edu. 26 00:01:00,090 --> 00:01:02,636 Bu kullandığımız bir araçtır Bizim lisans sınıfta. 27 00:01:02,636 --> 00:01:04,510 o tasarlanmıştır olsa 12 yaş ve üstü için, 28 00:01:04,510 --> 00:01:07,570 biz bunu kullanmak Bu yeraldığını parçası 29 00:01:07,570 --> 00:01:10,020 o güzel, eğlenceli beri öğrenme grafik yolu 30 00:01:10,020 --> 00:01:12,160 programlama hakkında küçük bir şey. 31 00:01:12,160 --> 00:01:17,600 Peki nerede o URL'ye baş Oldukça böyle bir sayfa göreceksiniz, 32 00:01:17,600 --> 00:01:23,330 ve devam edin ve tıklayın Sağ üst taraftaki Scratch katılın 33 00:01:23,330 --> 00:01:28,300 ve bir kullanıcı adı ve a seçin Parola ve sonuçta kendinizi olsun 34 00:01:28,300 --> 00:01:29,970 Bir account-- scratch.mit.edu. 35 00:01:29,970 --> 00:01:32,165 36 00:01:32,165 --> 00:01:34,665 Ben bir olarak kullanabilirsiniz düşündüm fırsat öncelikle bu göstermek için. 37 00:01:34,665 --> 00:01:39,120 Bir soru molası sırasında gündeme geldi Ne hakkında kodu aslında benziyor. 38 00:01:39,120 --> 00:01:41,315 Ve biz konuşuyorduk C hakkında mola sırasında, 39 00:01:41,315 --> 00:01:45,060 bölgesindeki particular-- özellikle Eski bir dilde alt düzey. 40 00:01:45,060 --> 00:01:47,750 Ve ben sadece hızlı yaptım Google C kodu bulmak için arama 41 00:01:47,750 --> 00:01:51,574 ikili arama, algoritması için biz Daha önce bu telefon rehberini aramak için kullanılır. 42 00:01:51,574 --> 00:01:54,240 Bu özel örnek, tabii ki, Bir telefon rehberi aramaz. 43 00:01:54,240 --> 00:01:57,840 Bu sadece bir sürü arar bilgisayarın belleğindeki sayılar. 44 00:01:57,840 --> 00:02:01,000 Ama sadece bir görsel olsun istiyorsanız Ne gerçek bir programlama duygusu 45 00:02:01,000 --> 00:02:05,370 Bu gibi görünüyor dil görünüyor Böyle küçük bir şey. 46 00:02:05,370 --> 00:02:09,759 Yani, yaklaşık 20 artı kod 30 kadar hatları, 47 00:02:09,759 --> 00:02:12,640 ama konuşma biz molası yapıyorduk 48 00:02:12,640 --> 00:02:16,000 nasıl bu aslında hakkında oldu birler ve sıfırlar dönüştü alır 49 00:02:16,000 --> 00:02:19,200 ve sadece o dönemezsiniz eğer işlemek ve birler ve sıfırlar gitmek 50 00:02:19,200 --> 00:02:20,210 koduna geri. 51 00:02:20,210 --> 00:02:22,620 >> Ne yazık ki, proses yani dönüştürücü olduğunu 52 00:02:22,620 --> 00:02:24,890 çok daha kolay olduğunu yapmaktan daha söyledi. 53 00:02:24,890 --> 00:02:29,400 Devam ettim ve aslında döndü Bu program İkili Arama, 54 00:02:29,400 --> 00:02:32,700 Bir yoluyla sıfır ve olanları içine Program Derleyici denilen Ben 55 00:02:32,700 --> 00:02:34,400 benim Mac burada sahip olur. 56 00:02:34,400 --> 00:02:37,850 Ve ekranda bakarsanız Burada, özellikle odaklama 57 00:02:37,850 --> 00:02:43,520 bu orta altı sütun üzerine sadece, Yalnızca sıfırları ve olanları görürsünüz. 58 00:02:43,520 --> 00:02:48,290 Ve bu sıfırlar ve hangilerinin olduğunu tam olarak bu arama programı oluşturmak. 59 00:02:48,290 --> 00:02:53,720 >> Ve böylece beş bitlik her yığın, Burada sıfırlar ve olanları her bayt, 60 00:02:53,720 --> 00:02:57,310 Bazı öğretim temsil tipik olarak bir bilgisayar içinde. 61 00:02:57,310 --> 00:03:00,730 Ve aslında, duydum eğer Pazarlama sloganı "Intel Inside" - yani, 62 00:03:00,730 --> 00:03:04,610 Tabii, sadece bir var demektir bilgisayarın içindeki Intel CPU veya beyin. 63 00:03:04,610 --> 00:03:08,000 Ve bu bir CPU olmanın ne demek Bir komut seti var, 64 00:03:08,000 --> 00:03:08,840 sözde. 65 00:03:08,840 --> 00:03:11,620 >> Birçok dünyadaki her işlemci, Onları bu gün Intel tarafından yapılan, 66 00:03:11,620 --> 00:03:13,690 sonlu anlar Talimatlar sayısı. 67 00:03:13,690 --> 00:03:18,690 Ve bu talimatlar çok düşük seviyededir olarak, bu iki sayı eklemek 68 00:03:18,690 --> 00:03:22,560 Birlikte bu iki sayıyı çarpmak, Buradan elde edilen verilerin bu parça taşımak 69 00:03:22,560 --> 00:03:27,340 Burada bellekte için, bu tasarruf Buradan elde edilen bilgiler, bellekte buralara 70 00:03:27,340 --> 00:03:32,200 ve böylece forth-- çok, çok düşük seviyeli, neredeyse elektronik ayrıntılar. 71 00:03:32,200 --> 00:03:34,780 Ama bu matematiksel ile operasyonlar birleştiğinde 72 00:03:34,780 --> 00:03:37,410 daha önce tartıştığımız ne, veri temsili 73 00:03:37,410 --> 00:03:40,450 can birler ve sıfırlar gibi Her şeyi kurmak 74 00:03:40,450 --> 00:03:44,180 Bir bilgisayar olup olmadığını, bugün yapabileceği o, metinsel, grafik, müzik var 75 00:03:44,180 --> 00:03:45,580 ya da. 76 00:03:45,580 --> 00:03:49,450 >> Yani bu almak çok kolay hızlı bir şekilde otların kaybetti. 77 00:03:49,450 --> 00:03:52,150 Ve bir sürü var sözdizimsel zorluklar 78 00:03:52,150 --> 00:03:56,630 bu sayede en basit yaparsanız, Programın yazım hataları hiçbiri aptalca 79 00:03:56,630 --> 00:03:57,860 olursa olsun çalışacaktır. 80 00:03:57,860 --> 00:04:00,366 Ve böylece yerine kullanarak C gibi dil Bu sabah, 81 00:04:00,366 --> 00:04:02,240 Ben bunun olacağını düşündüm daha eğlenceli aslında yapmak 82 00:04:02,240 --> 00:04:04,840 daha fazla görsel bir şey, hangi Çocuklar için tasarlanmış ise 83 00:04:04,840 --> 00:04:08,079 Mükemmel bir tezahürü aslında gerçek bir programlama 84 00:04:08,079 --> 00:04:10,370 dil alanındaki lazım olur metin yerine resim kullanmak 85 00:04:10,370 --> 00:04:11,710 bu fikirleri temsil etmek. 86 00:04:11,710 --> 00:04:15,470 >> Eğer gerçekten bir var bir kere Yani scratch.mit.edu hesap, 87 00:04:15,470 --> 00:04:21,070 Oluştur düğmesini tıklayın üstündeki sitenin bıraktı. 88 00:04:21,070 --> 00:04:24,620 Ve böyle bir ortam görmelisiniz Ben ekranda gördüğünüz üzereyim biri 89 00:04:24,620 --> 00:04:26,310 İşte. 90 00:04:26,310 --> 00:04:29,350 Ve biz biraz harcayacağınız Zaman biraz burada oynuyor. 91 00:04:29,350 --> 00:04:34,080 Hepimizin bazı çözemez Bakalım şu şekilde sorunlar birlikte. 92 00:04:34,080 --> 00:04:39,420 >> Peki bu içinde göreceksiniz environment-- ve aslında sadece izin 93 00:04:39,420 --> 00:04:40,050 Beni duraklatmak. 94 00:04:40,050 --> 00:04:42,680 Herkes Buraya değil mi? 95 00:04:42,680 --> 00:04:45,070 Burada değil? 96 00:04:45,070 --> 00:04:45,800 TAMAM. 97 00:04:45,800 --> 00:04:49,030 Bu yüzden bana bir kaç işaret izin Bu ortamın özellikleri. 98 00:04:49,030 --> 00:04:55,024 >> Ekranın sol üst kısmında Yani, biz Çizik sahne var, tabiri caizse. 99 00:04:55,024 --> 00:04:57,440 Çizilmeye sadece adı Bu programlama dilinin; 100 00:04:57,440 --> 00:05:00,356 o da kedinin adı olduğunu Eğer turuncu orada varsayılan görüyoruz. 101 00:05:00,356 --> 00:05:02,160 O, bir sahnede yani çok ben tarif gibi 102 00:05:02,160 --> 00:05:05,770 Bir varlık olarak daha önce kaplumbağa dikdörtgen beyaz tahta ortamı. 103 00:05:05,770 --> 00:05:09,800 Bu kedinin dünya tamamen sınırlıdır Oradaki dikdörtgen yukarı üstüne. 104 00:05:09,800 --> 00:05:12,210 >> Bu arada, sağ tarafta Burada tarafta, öyle 105 00:05:12,210 --> 00:05:15,610 Sadece bir komut dosyaları alanı, boş barut eğer olacak. 106 00:05:15,610 --> 00:05:18,590 Bu ne yazmak için gidiyoruz nerede sadece bir an bizim programlar. 107 00:05:18,590 --> 00:05:22,935 Ve yapı taşları, biz eder Bu bulmacayı program-- yazmak için kullanın 108 00:05:22,935 --> 00:05:25,310 Parçalar, bir will-- ise ortasında burada olanlar, 109 00:05:25,310 --> 00:05:27,500 ve kategorize konum işlevselliği ile. 110 00:05:27,500 --> 00:05:31,000 Yani, örneğin, ben önde gidiyorum ve bunlardan en az bir göstermektedir. 111 00:05:31,000 --> 00:05:33,690 Devam edin ve tıklayın gidiyorum kontör Kontrol kategorisi. 112 00:05:33,690 --> 00:05:35,720 >> Peki bu kontör kategoriler vardır. 113 00:05:35,720 --> 00:05:39,410 Ben Denetim kategorisini tıklatın gidiyorum. 114 00:05:39,410 --> 00:05:44,020 Aksine, ben olayları tıklayın gidiyorum kategorisinde, çok ilki kontör. 115 00:05:44,020 --> 00:05:47,790 Ve hatta birlikte takip etmek istiyorsanız Biz bunu, sen oldukça buyrun. 116 00:05:47,790 --> 00:05:52,180 Ben tıklayın ve bu sürüklemek için gidiyorum İlki, "yeşil bayrak tıklandığında." 117 00:05:52,180 --> 00:05:58,410 Ve sonra ben sadece damla gidiyorum kabaca benim boş levhaların üst kısmında. 118 00:05:58,410 --> 00:06:01,450 >> Ve Scratch hakkında güzel ne bu puzzle parçası, o zaman 119 00:06:01,450 --> 00:06:04,560 Diğer bulmaca ile iç içe parçalar, kelimenin tam anlamıyla yapacak 120 00:06:04,560 --> 00:06:06,460 Bu puzzle parçaları yapmak ne demek. 121 00:06:06,460 --> 00:06:09,710 Yani, örneğin, Scratch doğru şimdi onun dünyanın ortasında. 122 00:06:09,710 --> 00:06:14,660 Devam edin ve seçmek için gidiyorum Şimdi, diyelim ki, Hareket kategorisi, 123 00:06:14,660 --> 00:06:18,000 Eğer yapmak istiyorum eğer Hareket kategorisini same--. 124 00:06:18,000 --> 00:06:20,430 Ve şimdi bir bütün var fark Burada puzzle parçaları demet 125 00:06:20,430 --> 00:06:23,370 Yine, tür yapmak, öyle diyorlar. 126 00:06:23,370 --> 00:06:28,110 Ve ben devam edin ve sürükle ve gidiyorum Burada üzerinde hareket bloğu bırakın. 127 00:06:28,110 --> 00:06:31,860 >> Ve bu kısa sürede size olsun fark "Yeşil bayrak dibine yakın 128 00:06:31,860 --> 00:06:34,580 tıklandığında "butonuna haber nasıl bir beyaz çizgi görünür, 129 00:06:34,580 --> 00:06:36,950 neredeyse var sanki Manyetik, oraya gitmek istiyor. 130 00:06:36,950 --> 00:06:43,070 Sadece gidelim, ve yapışır Birlikte ve şekiller maç olacak. 131 00:06:43,070 --> 00:06:46,620 Ve şimdi yapabilirsiniz belki de neredeyse biz bu nereye gidiyoruz sanırım. 132 00:06:46,620 --> 00:06:51,570 >> Eğer Scratch aşamada bakacak olursak Burada ve üzerinde bunun üstüne bakmak, 133 00:06:51,570 --> 00:06:55,142 Eğer kırmızı ışık görürsünüz, bir işareti ve bir yeşil bayrak durdurun. 134 00:06:55,142 --> 00:06:57,100 Ve ben önde gidiyorum ve benim screen-- izlemek 135 00:06:57,100 --> 00:06:58,460 Sadece bir an için, eğer sen-ebil. 136 00:06:58,460 --> 00:07:01,960 Ben tıklayın gidiyorum Şu anda bayrağı yeşil, 137 00:07:01,960 --> 00:07:07,850 ve o 10 adım gibi görünen taşındı ya da ekranda 10 piksel, 10 nokta. 138 00:07:07,850 --> 00:07:13,390 >> Ve böylece heyecan verici değil, ama bana teklif izin 139 00:07:13,390 --> 00:07:17,440 Hatta bu öğretim olmadan sadece Kendi intuition-- let kendi kullandığı 140 00:07:17,440 --> 00:07:22,560 Beni nasıl anlamaya öneriyoruz Sağ sahneden Scratch yürüyüş yapmak. 141 00:07:22,560 --> 00:07:28,700 Onu sağ tarafı için yol yapmak var ekran, sağa tüm yol. 142 00:07:28,700 --> 00:07:32,200 Sana bir an vereyim ya da böylece güreşmek. 143 00:07:32,200 --> 00:07:37,681 Sen bir göz atmak isteyebilirsiniz Blokların diğer kategoriler de. 144 00:07:37,681 --> 00:07:38,180 Pekala. 145 00:07:38,180 --> 00:07:41,290 Yani sadece biz varken, tekrarlamak için yeşil bayrak burada tıklanan 146 00:07:41,290 --> 00:07:44,850 ve 10 adım olduğunu taşımak Sadece talimat, her zaman 147 00:07:44,850 --> 00:07:46,720 yeşil bayrak tıklayın neler oluyor? 148 00:07:46,720 --> 00:07:50,070 Eh, o benim program çalışıyor. 149 00:07:50,070 --> 00:07:52,450 Yani bu yapabileceğini belki elle 10 kez, 150 00:07:52,450 --> 00:07:55,130 ama bu biraz hissediyor Biraz hackish, tabiri caizse, 151 00:07:55,130 --> 00:07:57,480 bu sayede gerçekten değilim problem çözme. 152 00:07:57,480 --> 00:08:00,530 Ben sadece tekrar çalışıyorum ve tekrar ve tekrar 153 00:08:00,530 --> 00:08:03,180 kadar çeşit kazara direktifi ulaşmak 154 00:08:03,180 --> 00:08:05,560 ben daha önce ulaşmak için yola çıktı. 155 00:08:05,560 --> 00:08:08,200 >> Ama biz biliyoruz bizim pseudocode önce var olduğunu 156 00:08:08,200 --> 00:08:11,870 döngü programlanmasında bu kavram, Tekrar ve tekrar bir şey yapıyor. 157 00:08:11,870 --> 00:08:14,888 Ve böylece gördüm ki sana bir demet Ne bulmaca parçası uzandı? 158 00:08:14,888 --> 00:08:17,870 159 00:08:17,870 --> 00:08:18,730 kadar tekrarlayın. 160 00:08:18,730 --> 00:08:21,400 Bu yüzden bir şey yapabileceğini gibi kadar tekrarlayın. 161 00:08:21,400 --> 00:08:23,760 Ve tam kadar ne tekrar mı? 162 00:08:23,760 --> 00:08:27,720 163 00:08:27,720 --> 00:08:28,540 >> TAMAM. 164 00:08:28,540 --> 00:08:31,974 Ve benim biriyle gidelim Sadece bir an için biraz daha basit. 165 00:08:31,974 --> 00:08:33,140 Beni devam edip bu yapalım. 166 00:08:33,140 --> 00:08:35,559 sahip olabilir, dikkat edin Kontrol altında keşfedilen 167 00:08:35,559 --> 00:08:38,409 Bu tekrar blok var olduğu öyle görünmüyor büyük. 168 00:08:38,409 --> 00:08:41,039 değil çok oda var Bu iki sarı çizgiler arasında. 169 00:08:41,039 --> 00:08:43,539 Ama bazılarınız olabilir Eğer sürükle ve bırak eğer, fark, 170 00:08:43,539 --> 00:08:45,150 o şekli doldurmak için nasıl büyür dikkat edin. 171 00:08:45,150 --> 00:08:46,274 >> Ve hatta daha tıkmak olabilir. 172 00:08:46,274 --> 00:08:48,670 Sadece eğer büyümeye devam edeceğiz sürükle ve bunun üzerinde gezdirin. 173 00:08:48,670 --> 00:08:51,110 Ve ben ne olduğunu bilmiyorum Burada en iyi, bu yüzden izin 174 00:08:51,110 --> 00:08:54,760 En azından için, beş kez tekrarlayın örneği ve ardından sahneye geri dönmek 175 00:08:54,760 --> 00:08:56,720 ve yeşil bayrak tıklayın. 176 00:08:56,720 --> 00:08:59,110 Ve şimdi oldukça orada değil dikkat edin. 177 00:08:59,110 --> 00:09:02,400 >> Şimdi bazılarınız olarak, önerilen Victoria sadece 10 kez tekrarlayın etmedi. 178 00:09:02,400 --> 00:09:05,140 Ve bu genellikle yapar tüm yol onu, 179 00:09:05,140 --> 00:09:10,510 ama orada olur bir daha sağlam keyfi bulmaktan daha yolu 180 00:09:10,510 --> 00:09:12,640 kaç hamle yapmak için? 181 00:09:12,640 --> 00:09:17,680 Ne daha iyi bir blok olabilir tekrar 10 kat daha olabilir mi? 182 00:09:17,680 --> 00:09:20,380 >> Evet, neden sonsuza kadar bir şey yapamaz? 183 00:09:20,380 --> 00:09:24,390 Ve şimdi bu puzzle parçası dönelim içeride ve bu bir kurtulun. 184 00:09:24,390 --> 00:09:28,300 Şimdi nerede Scratch olursa olsun fark başlar, o kenarına gider. 185 00:09:28,300 --> 00:09:30,700 Ve minnetle MİT, kim sadece Scratch yapar 186 00:09:30,700 --> 00:09:33,190 emin ki o asla yapar tamamen kaybolur. 187 00:09:33,190 --> 00:09:35,360 Her zaman kuyruğunu yakalayabilir. 188 00:09:35,360 --> 00:09:37,680 >> Ve sadece sezgisel, Neden hareketli tutmak mı? 189 00:09:37,680 --> 00:09:38,892 Burada neler oluyor? 190 00:09:38,892 --> 00:09:41,440 191 00:09:41,440 --> 00:09:43,824 O, durmuş gibi görünüyor ama Ben ve sürükle pick up sonra eğer 192 00:09:43,824 --> 00:09:45,240 o oraya gitmek isteyen tutar. 193 00:09:45,240 --> 00:09:46,123 Neden? 194 00:09:46,123 --> 00:09:51,610 195 00:09:51,610 --> 00:09:54,360 Gerçekten, bir bilgisayar tam anlamıyla yapmanız bunu söylemek ne olacak. 196 00:09:54,360 --> 00:09:58,380 Eğer söyleseydim Yani daha önce yapmak sonsuza kadar bir şey takiben 10 adım hareket, 197 00:09:58,380 --> 00:10:01,860 gidiyor ve devam edecek Ben kırmızı dur işareti vurmak kadar 198 00:10:01,860 --> 00:10:04,620 ve tamamen programı durdurmak. 199 00:10:04,620 --> 00:10:06,610 >> değil mi bu yüzden bile Bunu nasıl yapabilirdim 200 00:10:06,610 --> 00:10:09,510 Daha hızlı Scratch hamle yapmak ekran boyunca? 201 00:10:09,510 --> 00:10:12,060 202 00:10:12,060 --> 00:10:13,280 Daha adımlar, doğru mu? 203 00:10:13,280 --> 00:10:15,710 Bunun yerine 10 yapıyor Bir seferde, neden biz değiliz 204 00:10:15,710 --> 00:10:20,100 go ahead ve aşağıdaki amaçlara yönelik değiştirmek 50 Ne propose-- ki? 205 00:10:20,100 --> 00:10:24,410 Yani şimdi ben yeşil tıklayın gidiyorum bayrak ve aslında, o gerçekten çok hızlı gidiyor. 206 00:10:24,410 --> 00:10:27,180 >> Ve bu, tabii ki, sadece bir animasyon bir tezahürüdür. 207 00:10:27,180 --> 00:10:28,060 Animasyon nedir? 208 00:10:28,060 --> 00:10:33,090 Sadece size insan a gösteriyor Gerçekten hareketsiz görüntülerin sürü, 209 00:10:33,090 --> 00:10:34,160 Gerçekten, gerçekten hızlı. 210 00:10:34,160 --> 00:10:36,500 Ve eğer öyleyse biz sadece söylüyorsun onu daha adımları hareket etmek, 211 00:10:36,500 --> 00:10:39,750 Biz sadece etkisi için olmak yaşıyorsanız o ekranda değişiklik 212 00:10:39,750 --> 00:10:42,900 her zaman, daha hızlı bir şekilde her birimi. 213 00:10:42,900 --> 00:10:46,454 >> Ben önerdi Şimdi yeni bir meydan okuma Onu kenarından sıçrama sahip oldu. 214 00:10:46,454 --> 00:10:49,120 Peki bulmaca bilmeden ince çünkü parçalar exist-- 215 00:10:49,120 --> 00:10:53,030 Eğer alamadım eğer challenge-- evresi nedir 216 00:10:53,030 --> 00:10:54,280 sezgisel yapmak istiyorsun? 217 00:10:54,280 --> 00:10:58,030 Onu nasıl geri sıçrama olurdu ve ileri, sol ve sağ arasında? 218 00:10:58,030 --> 00:11:02,630 219 00:11:02,630 --> 00:11:03,810 >> Evet. 220 00:11:03,810 --> 00:11:05,680 Bu yüzden çeşit gerekir durumun, ve 221 00:11:05,680 --> 00:11:09,710 bu yüzden, çıkarabilseniz var gibi görünüyor Kontrol kategorisi altında, konuşuyoruz. 222 00:11:09,710 --> 00:11:14,110 Bu blokların hangisi biz muhtemelen istiyorsun? 223 00:11:14,110 --> 00:11:15,200 Evet, belki ", sonra." 224 00:11:15,200 --> 00:11:18,780 Yani sarı bloklar arasında fark biz bu "eğer" var, burada var 225 00:11:18,780 --> 00:11:23,920 ya da bu "eğer başka" blok bu olacak Bize bunu yapmak için bir karar vermek için izin 226 00:11:23,920 --> 00:11:25,000 ya bunu yapmak için. 227 00:11:25,000 --> 00:11:27,380 Ve sen bile yuva onları Birden fazla şeyler yapmak. 228 00:11:27,380 --> 00:11:34,910 Ya da henüz burada gitmiş değil verdiyseniz, Algılama kategorisine devam 229 00:11:34,910 --> 00:11:39,612 ve-- o burada bakalım. 230 00:11:39,612 --> 00:11:43,050 231 00:11:43,050 --> 00:11:52,050 >> Peki blok burada yardımcı olabilir O sahneden eğer algılamak için? 232 00:11:52,050 --> 00:11:56,740 Evet, bu blokların bazı fark parametrize edilebilir tabiri caizse. 233 00:11:56,740 --> 00:12:00,706 Bunlar bir çeşit değil, özelleştirilebilir HTML aksine dün nitelikleriyle, 234 00:12:00,706 --> 00:12:03,330 nerede bu nitelikler tür Bir etiketin davranışını özelleştirmek. 235 00:12:03,330 --> 00:12:08,880 Benzer şekilde burada, ben bu dokunma yakala Blok ve değişim ve soru sormak, 236 00:12:08,880 --> 00:12:11,500 Fareyi dokunuyorsun imleç gibi işaretçi 237 00:12:11,500 --> 00:12:13,250 ya da kenar dokunuyorsun? 238 00:12:13,250 --> 00:12:15,210 >> Bu yüzden bana gitmek ve bu yapalım. 239 00:12:15,210 --> 00:12:18,130 Ben bir an için uzaklaşmak için gidiyorum. 240 00:12:18,130 --> 00:12:21,320 Beni bu puzzle parçası alalım Burada, bu puzzle parçası bu, 241 00:12:21,320 --> 00:12:24,570 ve ben karışmak gidiyorum Sadece bir an için onları yukarı. 242 00:12:24,570 --> 00:12:27,620 Ben, bu hareket için gidiyorum dokunmadan kenarına değiştirebilirsiniz, 243 00:12:27,620 --> 00:12:38,590 Bunu yapmak ve ben harekete gidiyorum. 244 00:12:38,590 --> 00:12:40,490 Yani burada bazı maddeler vardır. 245 00:12:40,490 --> 00:12:42,570 Ben istediğim her şeyi buldum. 246 00:12:42,570 --> 00:12:47,710 >> Birisi nasıl önermek istiyorum ben Bu belki yukarıdan aşağıya bağlayabilirsiniz 247 00:12:47,710 --> 00:12:52,020 problemini çözmek amacıyla Çizilmeye hareket için sağa sola doğru 248 00:12:52,020 --> 00:12:57,020 Her sağdan sola soldan Zaman sadece duvara sıçrayan? 249 00:12:57,020 --> 00:12:58,050 Ne yapmak istiyorsun? 250 00:12:58,050 --> 00:13:01,097 Hangi blok Ben bağlamak gerekir "Yeşil bayrak ilk tıklanan"? 251 00:13:01,097 --> 00:13:04,060 252 00:13:04,060 --> 00:13:06,200 >> Tamam, o yüzden başlayalım "sonsuza kadar." 253 00:13:06,200 --> 00:13:07,170 Bundan sonra içeride gidiyor? 254 00:13:07,170 --> 00:13:10,290 Başkası. 255 00:13:10,290 --> 00:13:11,850 Tamam, adımları taşıyın. 256 00:13:11,850 --> 00:13:12,350 Pekala. 257 00:13:12,350 --> 00:13:14,470 Sonra ne? 258 00:13:14,470 --> 00:13:15,120 O zaman eğer. 259 00:13:15,120 --> 00:13:17,720 Ve görünüyor olsa da, fark birbirine sıkıca sandviç, 260 00:13:17,720 --> 00:13:19,500 Sadece dolduracak şekilde büyüyecektir. 261 00:13:19,500 --> 00:13:21,500 Sadece bunu istiyorum nerede atlayacaktır. 262 00:13:21,500 --> 00:13:25,920 >> Ve ben aranızda ne koymak ve eğer o zaman? 263 00:13:25,920 --> 00:13:27,180 Muhtemelen "eğer kenar dokunmadan." 264 00:13:27,180 --> 00:13:31,800 Ve ihbar, yine, bu çok büyük Bunun için, ancak dolduracak şekilde büyüyecektir. 265 00:13:31,800 --> 00:13:35,002 Ve sonra 15 derece dönüş? 266 00:13:35,002 --> 00:13:35,710 Kaç derece? 267 00:13:35,710 --> 00:13:38,800 268 00:13:38,800 --> 00:13:41,196 Evet, 180 dönecektir etrafında beni tüm yol. 269 00:13:41,196 --> 00:13:42,570 Yani bu hakkı var eğer görelim. 270 00:13:42,570 --> 00:13:43,930 Beni uzaklaştırmak edelim. 271 00:13:43,930 --> 00:13:45,130 >> Bana Scratch yukarı sürükleyin edelim. 272 00:13:45,130 --> 00:13:50,030 Bu yüzden bozuk biraz var Şimdi, ama bu sorun değil. 273 00:13:50,030 --> 00:13:52,231 Nasıl kolayca onu sıfırlayabilirsiniz? 274 00:13:52,231 --> 00:13:59,879 275 00:13:59,879 --> 00:14:01,045 Ben biraz hile gidiyorum. 276 00:14:01,045 --> 00:14:04,074 277 00:14:04,074 --> 00:14:05,990 Yani başka ekliyorum blok, sadece temiz olması için. 278 00:14:05,990 --> 00:14:08,424 Onu 90 derece işaret etmek istiyorum Varsayılan olarak sağa, 279 00:14:08,424 --> 00:14:10,840 bu yüzden sadece ona gidiyorum programlı yapmak. 280 00:14:10,840 --> 00:14:11,632 Ve işte başlıyoruz. 281 00:14:11,632 --> 00:14:14,740 282 00:14:14,740 --> 00:14:15,740 Biz bunu yapmış gibi görünüyor. 283 00:14:15,740 --> 00:14:19,980 Çünkü, biraz garip O baş aşağı yürüyor. 284 00:14:19,980 --> 00:14:21,250 en bir hata olduğunu diyelim. 285 00:14:21,250 --> 00:14:22,120 Bu bir hata. 286 00:14:22,120 --> 00:14:27,320 Bir hata, bir program, a bir hatadır Ben, insan, yapılan mantık hatası. 287 00:14:27,320 --> 00:14:28,985 Neden baş aşağı gidiyor? 288 00:14:28,985 --> 00:14:33,560 289 00:14:33,560 --> 00:14:35,250 MİT berbat yoksa ben mi? 290 00:14:35,250 --> 00:14:38,840 291 00:14:38,840 --> 00:14:42,550 >> Evet, yani, o MİT en değil hata. Onlar bana bir puzzle parçası verdi 292 00:14:42,550 --> 00:14:44,970 Bu derece bir dizi çevirmek diyor. 293 00:14:44,970 --> 00:14:47,672 Ve Victoria'nın önerisiyle, Ben 180 derece dönüyorum, 294 00:14:47,672 --> 00:14:48,880 hangi doğru sezgi. 295 00:14:48,880 --> 00:14:53,700 Ama tam anlamıyla 180 derece çevirerek 180 derece döndükten araçları, 296 00:14:53,700 --> 00:14:55,860 ve bu gerçekten değil Ne istediğimi, görünüşe göre. 297 00:14:55,860 --> 00:14:58,026 en azından o öyle, çünkü Bu iki boyutlu dünya 298 00:14:58,026 --> 00:15:00,740 böylece dönüm gerçekten gidiyor onu baş aşağı çevirmek için. 299 00:15:00,740 --> 00:15:04,030 >> Muhtemelen Ne bloğu kullanmak istiyorum Burada ne olduğunu görmek yerine, esaslı? 300 00:15:04,030 --> 00:15:11,890 301 00:15:11,890 --> 00:15:14,790 Bunu nasıl düzeltebilirim olabilir? 302 00:15:14,790 --> 00:15:18,380 Evet, bu yüzden noktası olabilir ters yönde. 303 00:15:18,380 --> 00:15:22,300 Ve aslında bu bile var yeterli olacak değil, 304 00:15:22,300 --> 00:15:26,410 Biz sadece sert kod can çünkü sağa veya sola işaret etmek. 305 00:15:26,410 --> 00:15:27,920 >> Sence neler yapabileceğini biliyor musunuz? 306 00:15:27,920 --> 00:15:30,160 Biz var gibi görünüyor Burada kolaylık bloğu. 307 00:15:30,160 --> 00:15:32,987 Ben yakınlaştırmak için, bkz bir şey burada ister misiniz? 308 00:15:32,987 --> 00:15:36,120 309 00:15:36,120 --> 00:15:40,020 MİT bir var gibi Yani görünüyor soyutlama burada inşa etti. 310 00:15:40,020 --> 00:15:45,440 Bu blok eş olduğu görülmektedir Diğer bloklar, çoğul hangi? 311 00:15:45,440 --> 00:15:49,510 >> Bu bir blok eşdeğer görünmektedir blokların bütün bu üçlü için 312 00:15:49,510 --> 00:15:50,880 biz burada var. 313 00:15:50,880 --> 00:15:54,670 çıkıyor Yani kolaylaştırabilirsiniz benim Bütün bunlar kurtularak programı 314 00:15:54,670 --> 00:15:58,270 ve sadece burada bu koymak. 315 00:15:58,270 --> 00:16:01,620 Ve şimdi o hala biraz var arabası ve şimdi için iyidir. 316 00:16:01,620 --> 00:16:03,370 Biz olmak bırakacağım. 317 00:16:03,370 --> 00:16:06,000 Ama program bile olduğunu basit ve bu da, 318 00:16:06,000 --> 00:16:09,060 temsilci olurdu programming-- bir gol 319 00:16:09,060 --> 00:16:13,430 ideal olarak kodunuzu yapmaktır Basit, mümkün olduğunca kompakt, 320 00:16:13,430 --> 00:16:15,650 yine de olurken mümkün olduğunca okunabilir. 321 00:16:15,650 --> 00:16:20,310 Sen o kadar özlü yapmak istemiyorum çok zor olduğunu anlamak için. 322 00:16:20,310 --> 00:16:22,826 >> Ama yerini ettik fark bir ile üç blok, 323 00:16:22,826 --> 00:16:24,200 ve bu muhtemelen iyi bir şey. 324 00:16:24,200 --> 00:16:27,280 Ben kavramı abstracted ettik ve sen olmadığını kontrol 325 00:16:27,280 --> 00:16:29,120 Sadece bir blok ile kenarında. 326 00:16:29,120 --> 00:16:31,520 Şimdi aslında bu eğlenceli olabilir. 327 00:16:31,520 --> 00:16:35,790 Bu çok katmıyor entelektüel değer ama oynak değer. 328 00:16:35,790 --> 00:16:39,730 Ben devam edeceğim ve burada bu ses kapmak. 329 00:16:39,730 --> 00:16:42,900 330 00:16:42,900 --> 00:16:46,420 Bu yüzden bana devam edelim, ve bana izin Bir an için programı durdurmak. 331 00:16:46,420 --> 00:16:52,070 Ben aşağıdakileri kaydetmemiz gidiyorum, Benim mikrofona erişim sağlayan. 332 00:16:52,070 --> 00:16:53,181 >> İşte başlıyoruz. 333 00:16:53,181 --> 00:16:53,680 Ah. 334 00:16:53,680 --> 00:16:58,710 335 00:16:58,710 --> 00:17:01,140 Tekrar deneyelim. 336 00:17:01,140 --> 00:17:02,279 İşte başlıyoruz. 337 00:17:02,279 --> 00:17:03,570 Tamam, ben yanlış bir şey kaydedildi. 338 00:17:03,570 --> 00:17:04,580 İşte başlıyoruz. 339 00:17:04,580 --> 00:17:05,080 Ah. 340 00:17:05,080 --> 00:17:07,910 341 00:17:07,910 --> 00:17:08,800 Ah. 342 00:17:08,800 --> 00:17:09,300 Pekala. 343 00:17:09,300 --> 00:17:10,791 Şimdi bu kurtulmak gerekir. 344 00:17:10,791 --> 00:17:11,290 Pekala. 345 00:17:11,290 --> 00:17:13,950 >> Yani şimdi ben bir Sadece kayıt "ouch." 346 00:17:13,950 --> 00:17:18,040 Şimdi bu yüzden gidiyorum önde ve bu "ah" diyorlar. 347 00:17:18,040 --> 00:17:20,270 Geri dönmek için gidiyorum Benim komut dosyaları için, ve şimdi 348 00:17:20,270 --> 00:17:25,460 ihbar denir bu blok var ses "miyav" çalmak veya ses çalma "ah." 349 00:17:25,460 --> 00:17:28,920 Ben bu sürüklemek için gidiyor ve burada yaşıyorum Ben komik etkisi bu koymalıyız? 350 00:17:28,920 --> 00:17:31,740 351 00:17:31,740 --> 00:17:37,860 Evet, şimdi bu tür var buggy, çünkü artık bu block-- 352 00:17:37,860 --> 00:17:42,050 fark bu nasıl "kenarında ise, sıçrama "kendine yeten türüdür. 353 00:17:42,050 --> 00:17:43,704 Yani bu düzeltmek gerekir. 354 00:17:43,704 --> 00:17:44,870 Beni devam edip bu yapalım. 355 00:17:44,870 --> 00:17:48,630 Beni bu kurtulmak edelim ve geri dönmek Bizim orijinal, daha bilinçli 356 00:17:48,630 --> 00:17:49,870 işlevselliği. 357 00:17:49,870 --> 00:18:01,080 "Kenar dokunmadan, daha sonra" Ben istiyorum Victoria önerdiği gibi, çevirmek, 358 00:18:01,080 --> 00:18:02,480 180 derece. 359 00:18:02,480 --> 00:18:05,497 Ve ben oynamak istiyorum yapmak Orada "ah" sesi? 360 00:18:05,497 --> 00:18:11,800 361 00:18:11,800 --> 00:18:15,580 >> Evet, dışarıda olduğunu fark O sarı blok. 362 00:18:15,580 --> 00:18:17,680 Bu yüzden de, olurdu hata, ama ben fark ettik. 363 00:18:17,680 --> 00:18:21,290 Yani burada o kadar sürüklemek için gidiyorum, ve ihbar şimdi içeride "eğer." 364 00:18:21,290 --> 00:18:24,250 "Eğer" Yani bu tür gibi kol gibi lekenin 365 00:18:24,250 --> 00:18:26,260 sadece gidiyor bunun içinde ne yapmak. 366 00:18:26,260 --> 00:18:30,216 Yani şimdi ben uzaklaştırmak eğer annoying-- riski 367 00:18:30,216 --> 00:18:32,860 368 00:18:32,860 --> 00:18:36,470 >> BİLGİSAYAR: Ah, ah, ah. 369 00:18:36,470 --> 00:18:39,910 >> DAVID MALAN: Ve sadece sonsuza kadar devam edecektir. 370 00:18:39,910 --> 00:18:44,160 Şimdi sadece şeyler hızlandırmak için Burada, beni devam edin ve yukarı açalım, 371 00:18:44,160 --> 00:18:50,460 en bana biraz gidelim açarsanız let sınıftan Kendi şeyler. 372 00:18:50,460 --> 00:18:53,000 373 00:18:53,000 --> 00:19:00,220 Ve en, bu diyelim, beni açmak izin biri bizim öğretim arkadaşlarının biri tarafından yapılan 374 00:19:00,220 --> 00:19:01,500 birkaç yıl önce. 375 00:19:01,500 --> 00:19:04,732 Yani biraz sizin hatırlamak olabilir yesteryear bu oyun, 376 00:19:04,732 --> 00:19:05,940 ve aslında dikkat çekici. 377 00:19:05,940 --> 00:19:08,190 Yaptığımız olsa Şu anda programları basit, 378 00:19:08,190 --> 00:19:09,980 en bu ne düşünelim Aslında benziyor. 379 00:19:09,980 --> 00:19:10,650 Bana oyun hit olsun. 380 00:19:10,650 --> 00:19:14,210 381 00:19:14,210 --> 00:19:18,980 >> Yani bu oyunda, bir var kurbağa ve oku kullanarak keys-- 382 00:19:18,980 --> 00:19:23,340 o ben Hatırlayamıyorum-- daha büyük adımlar atar Bu kurbağa üzerinde kontrole sahip. 383 00:19:23,340 --> 00:19:29,630 Ve gol meşgul karşısında elde etmektir araçların içine çalıştırmadan yol. 384 00:19:29,630 --> 00:19:34,735 Ve, ben burada gidersem en see-- izin ben bir günlük kaydırma için beklemek zorunda. 385 00:19:34,735 --> 00:19:38,130 386 00:19:38,130 --> 00:19:39,274 Bu bir hata gibi hissediyor. 387 00:19:39,274 --> 00:19:42,240 388 00:19:42,240 --> 00:19:43,495 Bu bir hata türüdür. 389 00:19:43,495 --> 00:19:45,980 390 00:19:45,980 --> 00:19:46,480 Pekala. 391 00:19:46,480 --> 00:19:51,550 Ben burada bu çıkıyorum Orada, ve sonra tutmak 392 00:19:51,550 --> 00:19:54,100 Tüm elde edene kadar gidiyor zambak yastıkları kurbağalar. 393 00:19:54,100 --> 00:19:55,920 Şimdi bu görünebilir daha karmaşık 394 00:19:55,920 --> 00:19:57,840 ama en kırmaya çalışalım Bu aşağı zihinsel 395 00:19:57,840 --> 00:20:00,040 ve sözlü bileşen bloklar halinde. 396 00:20:00,040 --> 00:20:03,910 Yani muhtemelen bir bulmaca var biz henüz görmedik parça 397 00:20:03,910 --> 00:20:07,440 ancak bu tuş yanıt'S, şeyler klavyeden çarptı. 398 00:20:07,440 --> 00:20:11,660 >> Yani muhtemelen bir tür var tuşuna yukarı eşitse, diyor blok, 399 00:20:11,660 --> 00:20:15,965 Daha sonra Scratch-- ile bir şeyler yapmak belki o 10 adım bu şekilde hareket ettirin. 400 00:20:15,965 --> 00:20:20,240 Aşağı tuşuna basılırsa, 10 adım taşımak Bu şekilde, ya da sol tuş, 10 adım hareket 401 00:20:20,240 --> 00:20:21,710 Bu şekilde, 10 adımlar vardır. 402 00:20:21,710 --> 00:20:23,644 Ben açıkça bir kurbağa haline kedi çevirdin. 403 00:20:23,644 --> 00:20:26,060 Yani bu sadece nerede Kazı aramaları biz dökersin-- kostüm olarak 404 00:20:26,060 --> 00:20:28,440 sadece kurbağa resmini ithal. 405 00:20:28,440 --> 00:20:29,570 >> Ama oluyor başka ne? 406 00:20:29,570 --> 00:20:32,794 Ne kod diğer hatları, başka hangi puzzle parçaları 407 00:20:32,794 --> 00:20:35,460 Blake yaptığı, bizim eğitim dost, Görünüşe göre, bu programda kullanmak? 408 00:20:35,460 --> 00:20:38,320 409 00:20:38,320 --> 00:20:42,730 Ne her şeyi yapıyor move-- Ne programlama inşa? 410 00:20:42,730 --> 00:20:44,950 >> Hareket, yani sure-- emin, blok taşıyın. 411 00:20:44,950 --> 00:20:49,330 Ve bu hareket bloğu ne Büyük olasılıkla iç? 412 00:20:49,330 --> 00:20:52,850 Evet, döngü çeşit, belki sonsuza kadar belki tekrar bloke block-- 413 00:20:52,850 --> 00:20:54,070 blok kadar tekrarlayın. 414 00:20:54,070 --> 00:20:57,330 Ve bu ne günlükleri yapıyor ve zambak yastıkları ve her şey hareket 415 00:20:57,330 --> 00:20:57,990 geri ve ileri. 416 00:20:57,990 --> 00:21:00,270 Sadece sonsuz oluyor. 417 00:21:00,270 --> 00:21:03,180 >> Neden arabalar bazı diğerlerinden daha hızlı hareket? 418 00:21:03,180 --> 00:21:06,607 Bu programlar hakkında farklı nedir? 419 00:21:06,607 --> 00:21:09,690 Evet, muhtemelen bazıları alıyor aynı anda daha fazla adım ve bazıları 420 00:21:09,690 --> 00:21:10,690 Aynı anda daha az adımlar. 421 00:21:10,690 --> 00:21:14,670 Ve görsel efekt Yavaş karşı hızlı. 422 00:21:14,670 --> 00:21:16,030 >> ne olduğunu düşünüyorsun? 423 00:21:16,030 --> 00:21:19,700 Benim kurbağa var tüm yol cadde ve nehir 424 00:21:19,700 --> 00:21:23,560 zambak ped, bir şey üzerine kayda değer oldu. 425 00:21:23,560 --> 00:21:26,540 Ne kadar kısa sürede bunu yaptığı gibi oldu? 426 00:21:26,540 --> 00:21:27,210 Durdu. 427 00:21:27,210 --> 00:21:29,680 Bu kurbağa durdu ve İkinci kurbağa var. 428 00:21:29,680 --> 00:21:33,155 Peki yapı olmalı orada kullanılan ne özelliği? 429 00:21:33,155 --> 00:21:36,020 430 00:21:36,020 --> 00:21:38,660 >> Evet, bu yüzden bir çeşit var de orada kondisyon "eğer". 431 00:21:38,660 --> 00:21:41,909 Biz bunu tartismadik-- görmedik out-- ve döner ama oradaki diğer bloklar var 432 00:21:41,909 --> 00:21:45,300 Eğer dokunmadan ise, söyleyebiliriz Ekranda başka bir şey, 433 00:21:45,300 --> 00:21:47,720 Eğer "o zaman." zambak pedi, dokunmadan eğer 434 00:21:47,720 --> 00:21:50,810 Ve o zaman biz var İkinci kurbağa görünmesi. 435 00:21:50,810 --> 00:21:54,969 Yani bu oyun kesinlikle olsa bile çok bile ilk bakışta rağmen tarihli 436 00:21:54,969 --> 00:21:58,010 orada çok Explorer gibi ve Blake gidiyor İki dakika içinde bu kadar kırbaç değil, 437 00:21:58,010 --> 00:22:00,390 muhtemelen onu birkaç aldı saat bu oyunu oluşturmak için 438 00:22:00,390 --> 00:22:03,850 Onun bellek veya videolara dayanarak Bunun yesteryear sürümünün. 439 00:22:03,850 --> 00:22:07,940 Fakat bu küçük şeylerin hepsini izolasyon ekranda oluyor 440 00:22:07,940 --> 00:22:11,550 Bu çok basit aşağı kaynatın constructs-- hareketler veya ifadeler 441 00:22:11,550 --> 00:22:15,519 Konuştuğumuz gibi, döngüler ve koşulları ve bu konuda. 442 00:22:15,519 --> 00:22:17,060 birkaç diğer meraklısı özellik var. 443 00:22:17,060 --> 00:22:19,130 Bazıları sadece destek estetik veya akustik, 444 00:22:19,130 --> 00:22:20,964 sesler gibi ben sadece oynadım. 445 00:22:20,964 --> 00:22:23,380 Ama çoğunlukla, sen Bu dil, Scratch var, 446 00:22:23,380 --> 00:22:25,350 temel tüm yapı taşları sen misin 447 00:22:25,350 --> 00:22:29,280 C, Java, JavaScript var, PHP, Ruby, Python, 448 00:22:29,280 --> 00:22:32,960 ve diğer dillerin herhangi bir sayı. 449 00:22:32,960 --> 00:22:36,720 Scratch hakkında herhangi bir sorunuz var mı? 450 00:22:36,720 --> 00:22:37,220 Pekala. 451 00:22:37,220 --> 00:22:40,303 Bu yüzden Scratch için daha derin dalış olmaz, Bu hafta sonu buyrun rağmen, 452 00:22:40,303 --> 00:22:42,860 Eğer özellikle çocuklar varsa veya yeğenlerinin ve, 453 00:22:42,860 --> 00:22:44,220 Scratch onları tanıtmak için. 454 00:22:44,220 --> 00:22:47,960 Aslında bir harika oynak var çevre ile kendi yazarları dediği gibi, 455 00:22:47,960 --> 00:22:49,120 çok yüksek tavanlı. 456 00:22:49,120 --> 00:22:51,670 biz başladık olsa çok düşük seviyeli ayrıntıları, 457 00:22:51,670 --> 00:22:54,890 Eğer gerçekten biraz yapabilirsiniz onunla ve bu belki de 458 00:22:54,890 --> 00:22:57,360 tam olarak bu bir gösteri. 459 00:22:57,360 --> 00:23:02,920 >> Ama şimdi biraz daha geçiş izin Sofistike sorunlar, eğer sen, 460 00:23:02,920 --> 00:23:05,870 "Arama" olarak bilinen ve daha genel ", sıralama". 461 00:23:05,870 --> 00:23:09,500 Biz bu telefon rehberi earlier-- burada vardı sadece discussion-- başka bir 462 00:23:09,500 --> 00:23:13,460 Biz aramak başardık daha verimli bir şekilde nedeniyle 463 00:23:13,460 --> 00:23:15,270 önemli bir varsayımın. 464 00:23:15,270 --> 00:23:17,655 Ve sadece açık olmak ne varsayım ben yapım oldu 465 00:23:17,655 --> 00:23:19,280 Bu telefon defterinde arama yaparken? 466 00:23:19,280 --> 00:23:23,342 467 00:23:23,342 --> 00:23:25,300 Mike Smith olduğunu telefon rehberi, I rağmen 468 00:23:25,300 --> 00:23:27,410 ele almak mümkün olacaktır Onsuz senaryo 469 00:23:27,410 --> 00:23:30,720 Ben sadece erken orada durdu. 470 00:23:30,720 --> 00:23:31,806 Kitap alfabetik olduğunu. 471 00:23:31,806 --> 00:23:33,930 Ve bu çok cömert varsayım, çünkü 472 00:23:33,930 --> 00:23:36,580 Ben tür kulüpler someone-- anlamına gelir bir köşe kesici, 473 00:23:36,580 --> 00:23:40,580 gibi birisi, çünkü hızlı değilim Başka benim için zor bir sürü iş yaptım. 474 00:23:40,580 --> 00:23:43,120 >> Ama ne olursa telefon kitap sıralanmamış edildi? 475 00:23:43,120 --> 00:23:47,050 Belki Verizon tembel var, sadece attı Herkesin adları ve numaraları orada 476 00:23:47,050 --> 00:23:50,120 belki sırayla hangi onlar telefon hizmeti için kaydoldum. 477 00:23:50,120 --> 00:23:54,570 Ve ne kadar zaman bu beni sürer Mike Smith gibi birini bulmak için? 478 00:23:54,570 --> 00:23:58,160 1000 sayfa telefonu kaç book-- sayfalar Ben bakmak gerekiyor? 479 00:23:58,160 --> 00:23:58,905 >> Hepsi. 480 00:23:58,905 --> 00:24:00,030 Sen şans çeşit konum. 481 00:24:00,030 --> 00:24:03,420 Kelimenin tam anlamıyla her bakmak zorunda sayfa telefon rehberi sadece eğer 482 00:24:03,420 --> 00:24:04,450 rasgele sıralı. 483 00:24:04,450 --> 00:24:06,910 Şanslı olsun ve Mike bulabilirsiniz ilk sayfada, çünkü o 484 00:24:06,910 --> 00:24:08,826 ilk müşterisi oldu telefon hizmeti sipariş etmek. 485 00:24:08,826 --> 00:24:10,760 Ama o da, son olabilirdi. 486 00:24:10,760 --> 00:24:12,500 >> Yani rastgele düzen iyi değil. 487 00:24:12,500 --> 00:24:16,750 Bu yüzden sıralamak olduğunu varsayalım telefon rehberi ya da genel sıralama verilerde 488 00:24:16,750 --> 00:24:18,520 biz verildi. 489 00:24:18,520 --> 00:24:19,440 bunu nasıl yapabilirim? 490 00:24:19,440 --> 00:24:21,360 >> Peki, beni sadece deneyeyim Burada basit bir örnek. 491 00:24:21,360 --> 00:24:24,290 Beni devam edin ve bir yazı tura atalım gemide kaç sayılar. 492 00:24:24,290 --> 00:24:35,480 Vardır Elimizdeki rakamları varsayalım en, dört, iki, bir ve üç diyelim. 493 00:24:35,480 --> 00:24:38,390 Ve Ben, bizim için bu numaraları sıralamak. 494 00:24:38,390 --> 00:24:39,017 >> Tamam iyi. 495 00:24:39,017 --> 00:24:39,850 Bunu nasıl yaptın? 496 00:24:39,850 --> 00:24:42,731 497 00:24:42,731 --> 00:24:43,230 Pekala. 498 00:24:43,230 --> 00:24:44,710 Yani en küçük ile başlar değer ve yüksek, 499 00:24:44,710 --> 00:24:46,084 ve bu gerçekten iyi bir sezgi var. 500 00:24:46,084 --> 00:24:48,080 Ve o biz fark insanlar aslında oldukça vardır 501 00:24:48,080 --> 00:24:49,913 sorunları çözme iyi Bu gibi en azından 502 00:24:49,913 --> 00:24:51,810 veri nispeten küçük olduğunda. 503 00:24:51,810 --> 00:24:54,860 En kısa sürede yüzlerce başladığınızda sayılar, sayılar binlerce, 504 00:24:54,860 --> 00:24:58,440 sayıların milyonlarca Ben muhtemelen Oldukça o kadar hızlı could not do it, 505 00:24:58,440 --> 00:25:00,620 olduğunu varsayarak sayılar boşluklar. 506 00:25:00,620 --> 00:25:03,450 Bir milyon saymak oldukça kolay Aksi takdirde, sadece zaman alıcı. 507 00:25:03,450 --> 00:25:07,150 >> Yani algoritma geliyor Ben şimdi sadece eskisi gibi 508 00:25:07,150 --> 00:25:08,930 En küçük sayı için arama oldu. 509 00:25:08,930 --> 00:25:12,900 Yani biz insanlar alabilir olsa bile görsel bilgi bir çok, 510 00:25:12,900 --> 00:25:14,830 Bir bilgisayar aslında Biraz daha sınırlı. 511 00:25:14,830 --> 00:25:17,560 bilgisayar olabilir sadece Bir seferde bir bayt bakmak 512 00:25:17,560 --> 00:25:20,770 Bir olan Zamanın ya da belki dört bayt Bir olan Zamanın bugünlerde belki 8 bayt 513 00:25:20,770 --> 00:25:24,450 ancak çok az sayıda belirli bir anda bayt. 514 00:25:24,450 --> 00:25:28,480 >> Yani biz gerçekten var olduğu göz önüne alındığında dört ayrı değerler burada-- 515 00:25:28,480 --> 00:25:32,440 ve sahip olarak Ben düşünebilirsiniz O bir bilgisayar gibi olsaydı üzerinde blinders 516 00:25:32,440 --> 00:25:36,450 O başka bir şey göremiyorum Bir olan Zamanın az bir sayıdan 517 00:25:36,450 --> 00:25:39,720 bu yüzden genellikle olduğu gibi, üstlenecek İngilizce, biz sağdan sola doğru okumak gerekir. 518 00:25:39,720 --> 00:25:42,870 Yani ilk sayı Ben muhtemelen baktım çok hızlı bir şekilde daha sonra dört ve 519 00:25:42,870 --> 00:25:44,770 bu oldukça büyük fark number-- bana bakmaya devam edelim. 520 00:25:44,770 --> 00:25:45,357 >> İki var. 521 00:25:45,357 --> 00:25:45,940 Bir dakika bekle. 522 00:25:45,940 --> 00:25:47,070 İki dört daha küçüktür. 523 00:25:47,070 --> 00:25:47,986 Hatırlıyorum gidiyorum. 524 00:25:47,986 --> 00:25:49,070 İki şimdi küçüğüdür. 525 00:25:49,070 --> 00:25:50,417 Şimdi Şehre bile iyi. 526 00:25:50,417 --> 00:25:51,250 Bu bile küçük. 527 00:25:51,250 --> 00:25:54,000 Ben yaklaşık iki unutmak için gidiyorum ve şimdi bir tane hatırlıyorum. 528 00:25:54,000 --> 00:25:56,550 >> Ve o bakıyor durdurabilir? 529 00:25:56,550 --> 00:25:58,360 Eh, o dayalı olabilir Bu bilgiler ışığında, 530 00:25:58,360 --> 00:26:00,477 ama o daha iyi arama ediyorum Listenin geri kalanı. 531 00:26:00,477 --> 00:26:02,060 listede ne sıfır olursa Çünkü? 532 00:26:02,060 --> 00:26:03,643 Ne bir negatif listede olsaydı? 533 00:26:03,643 --> 00:26:07,720 O sadece onun cevabını biliyor O ayrıntısına eğer doğru 534 00:26:07,720 --> 00:26:08,729 tüm liste kontrol etti. 535 00:26:08,729 --> 00:26:10,020 Bu yüzden bu geri kalanı bakmak. 536 00:26:10,020 --> 00:26:11,394 Bu üç-- zaman kaybı oldu. 537 00:26:11,394 --> 00:26:13,540 şanssız var, ama ben Bunu yapmak için doğru yine. 538 00:26:13,540 --> 00:26:17,857 Ve böylece şimdi o muhtemelen En küçük sayı seçilmiş 539 00:26:17,857 --> 00:26:20,440 ve sadece başında koymak Listenin, ben burada yapacağım olarak. 540 00:26:20,440 --> 00:26:23,480 Şimdi bile, sonra ne yaptın neredeyse bu konuda düşünmüyordu 541 00:26:23,480 --> 00:26:25,962 Bu ölçüde? 542 00:26:25,962 --> 00:26:27,670 işlemi tekrarlayın, döngünün böylece bir çeşit. 543 00:26:27,670 --> 00:26:28,920 tanıdık bir fikri var. 544 00:26:28,920 --> 00:26:30,860 Yani burada dörttür. 545 00:26:30,860 --> 00:26:32,110 Şu anda en küçük var. 546 00:26:32,110 --> 00:26:33,220 Bu bir aday. 547 00:26:33,220 --> 00:26:33,900 Artık değil. 548 00:26:33,900 --> 00:26:34,770 Şimdi iki gördüm. 549 00:26:34,770 --> 00:26:36,630 Bu küçük bir sonraki eleman var. 550 00:26:36,630 --> 00:26:40,800 Böylece, daha küçük değil üç- Şimdi Ben ikisini koparmak. 551 00:26:40,800 --> 00:26:44,510 >> Ve şimdi işlemi yineleyin ve Tabii üç sonraki çıkardı alır. 552 00:26:44,510 --> 00:26:45,420 işlemi tekrarlayın. 553 00:26:45,420 --> 00:26:46,990 Dört çıkardı alır. 554 00:26:46,990 --> 00:26:50,140 Ve şimdi sayılar bitti, böylece liste sıralanması gerekir. 555 00:26:50,140 --> 00:26:51,960 >> Ve gerçekten de, bu resmi bir algoritma. 556 00:26:51,960 --> 00:26:56,610 Bir bilgisayar bilimcisi olur "Seçim tür" diyoruz 557 00:26:56,610 --> 00:27:00,880 Fikir tür bir varlık Yine iteratively-- listesi 558 00:27:00,880 --> 00:27:03,807 ve tekrar seçilmesi küçük sayı. 559 00:27:03,807 --> 00:27:06,140 o hakkında ve güzel ne sadece bu yüzden lanetlemek sezgisel. 560 00:27:06,140 --> 00:27:07,470 Çok basit. 561 00:27:07,470 --> 00:27:11,100 Ve aynı tekrarlayabilirsiniz operasyon tekrar tekrar. 562 00:27:11,100 --> 00:27:12,150 Basit. 563 00:27:12,150 --> 00:27:17,170 >> Bu durumda, hızlı, ancak aslında ne kadar sürer? 564 00:27:17,170 --> 00:27:19,880 en görünüyor yapalım ve Biraz daha sıkıcı hissediyorum. 565 00:27:19,880 --> 00:27:24,150 Bu yüzden, bir, iki, üç, dört, beş, altı, yedi, sekiz, dokuz, 10, 11, 12, 13, 14, 566 00:27:24,150 --> 00:27:26,160 15, 16-- rasgele sayı. 567 00:27:26,160 --> 00:27:28,780 Ben sadece daha bu istedim Sadece dört kereden. 568 00:27:28,780 --> 00:27:30,780 Yani bir bütün var eğer sayıların demet bunu şimdi-- 569 00:27:30,780 --> 00:27:32,420 Hatta önemli değil Onlar izin 's mudur nedir 570 00:27:32,420 --> 00:27:34,380 bu ne düşünmek algoritma gerçekten gibidir. 571 00:27:34,380 --> 00:27:35,857 >> Orada sayılar vardır varsayalım. 572 00:27:35,857 --> 00:27:38,190 Yine, önemli değil neyi Onlar, ancak rastgele konum. 573 00:27:38,190 --> 00:27:39,679 Ben Ben'in algoritması uyguluyorum. 574 00:27:39,679 --> 00:27:41,220 Ben küçük numarayı seçmeniz gerekir. 575 00:27:41,220 --> 00:27:41,761 Ben ne yaparım? 576 00:27:41,761 --> 00:27:44,240 Ve ben fiziksel olarak gidiyorum onu dışarı hareket bu sefer yapmak. 577 00:27:44,240 --> 00:27:46,099 Looking görünümlü, seyir, seyir, seyir. 578 00:27:46,099 --> 00:27:48,140 Sadece ben almak zaman Listenin sonuna can 579 00:27:48,140 --> 00:27:51,230 Ben küçük fark iki numaralı bu kez oldu. 580 00:27:51,230 --> 00:27:52,720 Bir listede değil. 581 00:27:52,720 --> 00:27:54,400 Yani iki indirdi. 582 00:27:54,400 --> 00:27:55,590 >> Bundan sonra ne yapacağım? 583 00:27:55,590 --> 00:27:58,600 seyir, seyir, seyir, seyir. 584 00:27:58,600 --> 00:28:02,250 Şimdi, çünkü numara yedi bulundu Bu Numaraları boşluklar var 585 00:28:02,250 --> 00:28:03,300 ama sadece keyfi. 586 00:28:03,300 --> 00:28:03,800 Pekala. 587 00:28:03,800 --> 00:28:06,030 Yani şimdi ben yedi aşağı koyabilirsiniz. 588 00:28:06,030 --> 00:28:08,860 Looking bakarak bakarak. 589 00:28:08,860 --> 00:28:11,030 >> Şimdi, varsayarak yaşıyorum Tabii ki, Ben böyle şeyler yapmaz 590 00:28:11,030 --> 00:28:14,780 Ekstra RAM, ekstra belleği için, tabii ki, 591 00:28:14,780 --> 00:28:16,080 Ben aynı sayıda bakıyorum. 592 00:28:16,080 --> 00:28:18,246 Elbette hatırladım olabilir Bu sayıların hepsi 593 00:28:18,246 --> 00:28:19,930 ve kesinlikle doğrudur. 594 00:28:19,930 --> 00:28:22,610 Ama Ben bütün hatırlar eğer sayıların o gördü, 595 00:28:22,610 --> 00:28:24,430 o gerçekten vermiş değil temel ilerleme 596 00:28:24,430 --> 00:28:26,170 o zaten, çünkü arama yeteneği 597 00:28:26,170 --> 00:28:27,540 gemide numaralar arasında. 598 00:28:27,540 --> 00:28:29,373 her anımsama sayılar, yardımcı olmuyor 599 00:28:29,373 --> 00:28:32,490 o bir bilgisayar olarak yine de, çünkü Sadece, biz söyledim, bir numara bakmak 600 00:28:32,490 --> 00:28:33,080 zamanında. 601 00:28:33,080 --> 00:28:35,760 Yani hile yok çeşit var Orada kaldıraç olabilir. 602 00:28:35,760 --> 00:28:39,170 >> gerçekte, böylece ben Listeyi aramaya devam, 603 00:28:39,170 --> 00:28:44,200 Gerçekten sadece devam etmek zorunda , Ileri ve geri içinden dışarı koparma 604 00:28:44,200 --> 00:28:45,710 Bir sonraki en küçük sayı. 605 00:28:45,710 --> 00:28:48,810 Ve ne tür çıkarabiliriz benim aptal hareketleri, 606 00:28:48,810 --> 00:28:50,860 Bu sadece çok olur çok hızlı bir şekilde can sıkıcı, 607 00:28:50,860 --> 00:28:54,850 ve ben geri gidiyor gibi görünüyor ve ileri, geri ve ileri biraz. 608 00:28:54,850 --> 00:29:03,220 Şimdi dürüst olmak gerekirse, ben gitmek zorunda değilsiniz oldukça iyi, en adil olmak see-- izin 609 00:29:03,220 --> 00:29:06,310 Oldukça yürümek zorunda değilsiniz gibi birçok adımlar her zaman. 610 00:29:06,310 --> 00:29:09,200 Çünkü tabii ki, ben de listeden numara seçin 611 00:29:09,200 --> 00:29:11,860 Kalan liste daha kısa oluyor. 612 00:29:11,860 --> 00:29:14,240 >> Ve bu yüzden hakkında düşünelim kaç adım aslında değilim 613 00:29:14,240 --> 00:29:16,010 Her bir zaman içinde Traipsing. 614 00:29:16,010 --> 00:29:18,950 İlk durumda Biz 16 numara vardı 615 00:29:18,950 --> 00:29:22,210 ve böylece şimdi sadece maximally-- Bir discussion-- için bunu 616 00:29:22,210 --> 00:29:25,640 Ben 16'ya kadar bakmak zorunda kaldı sayılar küçük bulmak için. 617 00:29:25,640 --> 00:29:28,420 Ama bir kez dışarı koparıp küçük sayı, nasıl 618 00:29:28,420 --> 00:29:30,590 Uzun tabii kalan listesini oldu? 619 00:29:30,590 --> 00:29:31,420 Sadece 15. 620 00:29:31,420 --> 00:29:34,670 Peki kaç sayı Ben ya da ben var mı etrafında ikinci kez bakmak için? 621 00:29:34,670 --> 00:29:36,832 15, sadece gidip küçük bulmak için. 622 00:29:36,832 --> 00:29:39,540 Ama şimdi, tabii, liste, bir çok daha önce olduğundan daha küçüktür. 623 00:29:39,540 --> 00:29:42,540 Peki kaç adım yaptım ben dahaki sefere almak zorunda? 624 00:29:42,540 --> 00:29:49,970 14 ve daha sonra 13 ve sonra 12 artı nokta, Ben sadece biriyle kaldım kadar nokta, nokta. 625 00:29:49,970 --> 00:29:53,146 Yani şimdi bir bilgisayar bilimcisi olur herkesin eşit olduğunu ne, iyi, sorabilir miyim? 626 00:29:53,146 --> 00:29:55,770 Aslında bazı somut eşittir numara biz kesinlikle olabilir 627 00:29:55,770 --> 00:30:00,490 aritmetik, ama biz konuşmak istiyoruz algoritmaların verimliliği hakkında 628 00:30:00,490 --> 00:30:04,940 daha formulaically biraz liste ne kadar uzun bağımsızdır. 629 00:30:04,940 --> 00:30:06,240 >> Ve böylece biliyor musun? 630 00:30:06,240 --> 00:30:09,860 Bu 16 gibi, ama daha önce söylediğim, Sadece sorunun boyutunu diyelim 631 00:30:09,860 --> 00:30:10,970 n Bazı sayı n. 632 00:30:10,970 --> 00:30:13,220 Belki öyle, belki değil, 16 yaşında Üç, belki de bir milyon dolar. 633 00:30:13,220 --> 00:30:13,761 Bilmiyorum. 634 00:30:13,761 --> 00:30:14,390 Umurumda değil. 635 00:30:14,390 --> 00:30:16,520 Ne istiyorum gerçekten bir Bir formül I can 636 00:30:16,520 --> 00:30:19,420 Bu algoritma karşılaştırmak için kullanın diğer algoritmalar karşı 637 00:30:19,420 --> 00:30:22,350 Birisi iddia olabilir iyi ya da kötü. 638 00:30:22,350 --> 00:30:25,430 >> Bu yüzden çıkıyor ve sadece ben İlkokuldan bu biliyorum, 639 00:30:25,430 --> 00:30:34,790 Bu aslında aynı dışarı çalışır n üzerinde n olarak bir şey artı iki yere. 640 00:30:34,790 --> 00:30:40,020 Ve bu, bir eşit olur Tabii ki, artı n üzerinde iki kare n. 641 00:30:40,020 --> 00:30:43,250 Yani ben bir formül istedi kaç adımlar için 642 00:30:43,250 --> 00:30:46,330 tüm bakarak dahil edildi Tekrar ve tekrar bu numaraları 643 00:30:46,330 --> 00:30:52,681 ve tekrar ve tekrar, ben söyleyebilirim o n-plus n üzerinde iki kare var. 644 00:30:52,681 --> 00:30:53,430 Ama ne biliyor musunuz? 645 00:30:53,430 --> 00:30:54,500 Bu sadece pis görünüyor. 646 00:30:54,500 --> 00:30:56,470 Ben sadece gerçekten istemek şeylerin genel anlamda. 647 00:30:56,470 --> 00:30:58,810 Ve sizden çağırmak olabilir lise orada 648 00:30:58,810 --> 00:31:00,660 En yüksek mertebeden dönem kavramıdır. 649 00:31:00,660 --> 00:31:05,300 Bu terimlerin hangisi n , N, ya da yarısını kare, 650 00:31:05,300 --> 00:31:07,550 Zamanla çoğu etkisi var? 651 00:31:07,550 --> 00:31:11,920 Daha büyük n, aldığı En bu konularda? 652 00:31:11,920 --> 00:31:15,560 >> Diğer bir deyişle, ben takarsanız milyonda n kare 653 00:31:15,560 --> 00:31:17,900 büyük olasılıkla olacak hakim faktörü, 654 00:31:17,900 --> 00:31:21,670 Çünkü bir milyon kez kendisi çok daha büyük 655 00:31:21,670 --> 00:31:23,682 daha artı bir milyon ilave. 656 00:31:23,682 --> 00:31:24,390 Yani biliyor musun? 657 00:31:24,390 --> 00:31:27,305 Bu tür bir yama büyük numara bir numara kare ise. 658 00:31:27,305 --> 00:31:28,430 Bu gerçekten önemli değil. 659 00:31:28,430 --> 00:31:30,596 Biz sadece haç gidiyoruz dışarı ve unutun. 660 00:31:30,596 --> 00:31:34,250 Ve böylece bir bilgisayar bilimcisi söyleyebilirim bu algoritma verimliliği 661 00:31:34,250 --> 00:31:37,850 n mertebesindedir squared-- Gerçekten bir yaklaşım anlamına gelir. 662 00:31:37,850 --> 00:31:40,810 Bu tür kabaca n kare. 663 00:31:40,810 --> 00:31:44,130 Zaman içinde, daha büyük bir ve daha büyük n bu, alır 664 00:31:44,130 --> 00:31:47,610 ne için iyi bir tahmin olduğunu verim ve verimlilik eksikliği 665 00:31:47,610 --> 00:31:49,400 Bu algoritma aslında. 666 00:31:49,400 --> 00:31:52,040 Ve ben türetmek, elbette, Aslında matematik yapmaktan. 667 00:31:52,040 --> 00:31:54,040 Ama şimdi ben sadece sallayarak ediyorum ellerim, çünkü ben sadece 668 00:31:54,040 --> 00:31:55,790 Bu algoritmanın genel anlamda istiyorum. 669 00:31:55,790 --> 00:31:58,850 >> Dolayısıyla aynı mantığı kullanarak, bu arada, Başka bir algoritma düşünelim 670 00:31:58,850 --> 00:32:01,162 biz zaten at-- doğrusal arama baktı. 671 00:32:01,162 --> 00:32:02,870 Ne zaman arıyordum Telefon book-- için 672 00:32:02,870 --> 00:32:05,980 arama, onu sıralama değil Telefon book-- yoluyla 673 00:32:05,980 --> 00:32:09,197 biz olduğunu söylüyordu 1.000 adım, ya da 500 adım. 674 00:32:09,197 --> 00:32:10,280 Ama bu genelleme edelim. 675 00:32:10,280 --> 00:32:12,860 n sayfalar varsa telefon rehberi, ne 676 00:32:12,860 --> 00:32:17,250 çalışma süresi veya Doğrusal arama verimliliği? 677 00:32:17,250 --> 00:32:19,750 Bu sırasına var kaç adım bulmak için 678 00:32:19,750 --> 00:32:24,210 Mike Smith, doğrusal arama kullanarak İlk algoritma, hatta ikinci? 679 00:32:24,210 --> 00:32:27,240 680 00:32:27,240 --> 00:32:31,710 >> En kötü durumda, Mike Kitabın sonunda. 681 00:32:31,710 --> 00:32:35,590 Telefon rehberi 1000 sayfa vardır Yani eğer, Biz en kötü durumda, son kez dedi 682 00:32:35,590 --> 00:32:38,380 kabaca nasıl alabilir birçok sayfa Mike bulmak için? 683 00:32:38,380 --> 00:32:38,990 1000 gibi. 684 00:32:38,990 --> 00:32:39,830 Bu bir üst sınır var. 685 00:32:39,830 --> 00:32:41,790 Bu olabilecek en kötü durum. 686 00:32:41,790 --> 00:32:44,410 Fakat yine de, biz uzakta hareket ediyoruz Şimdi 1.000 gibi numaralardan. 687 00:32:44,410 --> 00:32:45,730 Sadece n var. 688 00:32:45,730 --> 00:32:47,470 >> Yani mantıklı sonucu nedir? 689 00:32:47,470 --> 00:32:50,210 bir telefonda Mike bulma n sayfası vardır kitap 690 00:32:50,210 --> 00:32:55,280 çok kötü durumda, sürebilir, kaç n emriyle adımlar? 691 00:32:55,280 --> 00:32:58,110 Gerçekten de, bir bilgisayar bilim adamı söyleyebilirim 692 00:32:58,110 --> 00:33:02,340 çalışma süresi, ya da performans veya verimlilik 693 00:33:02,340 --> 00:33:07,470 bir algoritma benzeri veya verimsizlik, doğrusal bir arama n emriyle üzerindedir. 694 00:33:07,470 --> 00:33:10,010 Ve biz aynı uygulayabilirsiniz birşeyler kapısı mantığı 695 00:33:10,010 --> 00:33:13,170 Ben sadece ikinci olduğu gibi Algoritma biz telefon rehberi vardı 696 00:33:13,170 --> 00:33:16,040 nerede bir defada iki sayfa gitti. 697 00:33:16,040 --> 00:33:20,120 >> Yani 1000 sayfa telefon rehberi olabilir 500 sayfa dönüşler bizi, artı bir 698 00:33:20,120 --> 00:33:21,910 biz biraz geri çift eğer. 699 00:33:21,910 --> 00:33:26,590 Yani bir telefon rehberi n sayfalar varsa, ancak Biz bir defada iki sayfa yapıyoruz 700 00:33:26,590 --> 00:33:28,900 Bu kabaca ne var? 701 00:33:28,900 --> 00:33:33,190 üzerinde iki N, böylece ikisi üzerinde n gibi. 702 00:33:33,190 --> 00:33:38,490 Ama iddia a yapılan iki-- üzerinde an önce o n 703 00:33:38,490 --> 00:33:41,060 bu sadece n aynı tür. 704 00:33:41,060 --> 00:33:44,050 Bu, sadece bir sabit faktör var bilgisayar mühendisleri söyleyebilirim. 705 00:33:44,050 --> 00:33:45,970 tek odaklanmak izin değişkenler, gerçekten-- 706 00:33:45,970 --> 00:33:47,780 denklemde büyük değişkenler. 707 00:33:47,780 --> 00:33:52,530 >> birini yapılan Böylece ister doğrusal arama, Bir seferde bir sayfa veya bir defada iki sayfa, 708 00:33:52,530 --> 00:33:54,810 tür temelde aynıdır. 709 00:33:54,810 --> 00:33:56,880 Bu n sırasına hala. 710 00:33:56,880 --> 00:34:01,930 Ama önce benim resim ile iddia Üçüncü algoritma olmadığını 711 00:34:01,930 --> 00:34:02,480 doğrusal. 712 00:34:02,480 --> 00:34:03,605 Bu düz bir çizgi değildi. 713 00:34:03,605 --> 00:34:08,659 O eğri çizgi vardı ve cebirsel formülü ne vardı? 714 00:34:08,659 --> 00:34:11,812 n- Log yani n tabanını iki oturum açın. 715 00:34:11,812 --> 00:34:14,520 Ve biz de gitmek zorunda değilsiniz logaritma çok detay bugün 716 00:34:14,520 --> 00:34:17,394 ama çoğu bilgisayar bilimciler olmaz Hatta baz ne olduğunu söyleyeyim. 717 00:34:17,394 --> 00:34:20,639 o Çünkü hepsi sadece sürekli faktörler, tabiri caizse, 718 00:34:20,639 --> 00:34:22,659 Sadece hafif sayısal farklılıklar. 719 00:34:22,659 --> 00:34:31,179 Ve böylece bu çok yaygın olurdu özellikle resmi bilgisayar için yolu 720 00:34:31,179 --> 00:34:33,949 bir tahta bilim adamları ya da bir beyaz tahta at programcılar 721 00:34:33,949 --> 00:34:36,889 Aslında savunarak hangi onlar kullanmak istiyorsunuz algoritması 722 00:34:36,889 --> 00:34:39,500 ya da ne verimlilik kendi algoritmasıdır. 723 00:34:39,500 --> 00:34:42,960 >> Ve bu mutlaka bir şey değildir Eğer, herhangi bir ayrıntılı olarak ele 724 00:34:42,960 --> 00:34:47,889 ama iyi bir programcı birisi kim sağlam, resmi bir geçmişe sahiptir. 725 00:34:47,889 --> 00:34:50,120 O konuşmak mümkün değil Bu arada bu tür size 726 00:34:50,120 --> 00:34:53,350 ve aslında yapmak nitel argümanlar 727 00:34:53,350 --> 00:34:56,870 için neden bir algoritma veya Yazılımın tek parça 728 00:34:56,870 --> 00:35:00,165 başka bir şekilde daha üstündür. 729 00:35:00,165 --> 00:35:02,540 kesinlikle olabilir çünkü Sadece bir kişinin programı çalıştırmak 730 00:35:02,540 --> 00:35:04,980 ve saniye sayısını bazı numaraları sıralamak alır 731 00:35:04,980 --> 00:35:06,710 ve bazı çalıştırabilirsiniz Diğer kişinin programı 732 00:35:06,710 --> 00:35:08,418 ve sayısını saniye onu alır. 733 00:35:08,418 --> 00:35:12,840 Ancak bu daha genel bir yol olduğunu Eğer algoritmaları analiz etmek için kullanabileceğiniz, 734 00:35:12,840 --> 00:35:15,520 Sadece üzerinde, eğer sen Kağıt ya da sadece sözlü. 735 00:35:15,520 --> 00:35:18,430 Olmadan bile olmadan çalışan Hatta, örnek girişleri çalışıyor 736 00:35:18,430 --> 00:35:20,180 Sadece bu kadar ikna edebilirim. 737 00:35:20,180 --> 00:35:24,670 Ve böylece bir geliştirici veya eğer işe ile ona sahip ya da onu tür size iddia 738 00:35:24,670 --> 00:35:28,460 neden kendi algoritması, onların gizli milyarlarca arama için sos 739 00:35:28,460 --> 00:35:30,580 için web sayfalarının senin Şirket, bu, daha iyidir 740 00:35:30,580 --> 00:35:33,302 argümanların türlü onlar ideal yapmak gerekir. 741 00:35:33,302 --> 00:35:35,010 Ya da en azından bunlar şeyler çeşitleri 742 00:35:35,010 --> 00:35:40,211 Şuna, tartışma geleceğini Bir çok resmi tartışma en azından. 743 00:35:40,211 --> 00:35:40,710 Pekala. 744 00:35:40,710 --> 00:35:44,400 Yani ben bir şey önerdi Seçim sıralama denir. 745 00:35:44,400 --> 00:35:48,200 Ama orada olduğunu önermek için gidiyorum de bunu yapmanın başka yolları. 746 00:35:48,200 --> 00:35:50,400 Gerçekten ne gibi değildi Ben'in algoritması hakkında 747 00:35:50,400 --> 00:35:54,400 O yürümeye devam etti, ya da olduğunu beni ileri geri yürümek zorunda 748 00:35:54,400 --> 00:35:56,930 ve ileri geri ve ileri geri. 749 00:35:56,930 --> 00:36:04,130 yerine ben yapmak nelerdi Burada bu sayılar gibi bir şey 750 00:36:04,130 --> 00:36:08,200 ve ben sadece her başa vardı numara da onu verilen kulüpler gibi? 751 00:36:08,200 --> 00:36:10,780 >> Diğer bir deyişle, burada numaraların listemi. 752 00:36:10,780 --> 00:36:12,944 Dört, bir, üç, iki. 753 00:36:12,944 --> 00:36:14,360 Ve ben aşağıdakileri yapmak için gidiyorum. 754 00:36:14,360 --> 00:36:17,230 Rakamları eklemek için gidiyorum onlar yerine nereye ait 755 00:36:17,230 --> 00:36:18,980 Bir teker teker seçerek daha. 756 00:36:18,980 --> 00:36:20,820 Diğer bir deyişle, burada dördüncü var. 757 00:36:20,820 --> 00:36:22,430 >> İşte benim asıl liste. 758 00:36:22,430 --> 00:36:25,290 Ve ben korumak için gidiyorum Burada esasen yeni bir liste. 759 00:36:25,290 --> 00:36:26,710 Yani bu eski listesidir. 760 00:36:26,710 --> 00:36:28,560 Bu yeni listesidir. 761 00:36:28,560 --> 00:36:30,220 Ben dört numara ilk bkz. 762 00:36:30,220 --> 00:36:34,500 Benim yeni liste, başlangıçta boştur bu nedenle trivially olduğu 763 00:36:34,500 --> 00:36:36,410 Bu dört şimdi liste tasnif edilebilir. 764 00:36:36,410 --> 00:36:39,560 Ben sadece, bana verilen numarayı alıyorum ve benim yeni listede koyuyorum. 765 00:36:39,560 --> 00:36:41,460 >> Bu yeni liste sıralanır? 766 00:36:41,460 --> 00:36:41,990 Evet. 767 00:36:41,990 --> 00:36:45,090 Sadece bir tane var çünkü aptal eleman, ama kesinlikle olarak sıralanmış. 768 00:36:45,090 --> 00:36:46,390 yersiz bir şey yok. 769 00:36:46,390 --> 00:36:49,290 Daha ilginç, bu algoritma, Bir sonraki adıma geçmek zaman. 770 00:36:49,290 --> 00:36:50,550 >> Şimdi bir tane var. 771 00:36:50,550 --> 00:36:55,430 Bu yüzden, bir, tabii ki, önceki ait başlayan veya bu yeni listenin sonu? 772 00:36:55,430 --> 00:36:56,360 Başlangıç. 773 00:36:56,360 --> 00:36:58,530 Bu yüzden şimdi bazı işler yapmak zorunda. 774 00:36:58,530 --> 00:37:01,410 Bazı alarak oldum Benim işaretleyici ile özgürlükler 775 00:37:01,410 --> 00:37:03,120 sadece şeyler çizerek Onları istediğiniz yere, 776 00:37:03,120 --> 00:37:05,320 ama bu gerçekten değil Bir bilgisayardaki doğru. 777 00:37:05,320 --> 00:37:08,530 Bildiğimiz gibi bir bilgisayar, sahip RAM veya Random Access Memory, 778 00:37:08,530 --> 00:37:12,411 ve bu bir bayt olduğunu ve Başka bir bit ve bir bayt. 779 00:37:12,411 --> 00:37:14,910 Ve bir gigabayt varsa RAM, bir milyar bayta var, 780 00:37:14,910 --> 00:37:16,680 ama bir yerde fiziksel konum. 781 00:37:16,680 --> 00:37:19,540 Sadece etrafında şeyler hareket edemez gemide çizerek 782 00:37:19,540 --> 00:37:20,750 nereye istersen. 783 00:37:20,750 --> 00:37:24,090 Yeni liste varsa Yani bellekte dört konum, 784 00:37:24,090 --> 00:37:27,480 Ne yazık ki dörttür Zaten yanlış yerde. 785 00:37:27,480 --> 00:37:30,410 >> Yani numara eklemek için bir Ben sadece burada çekemez. 786 00:37:30,410 --> 00:37:31,901 Bu bellek konumu yok. 787 00:37:31,901 --> 00:37:35,150 Bu hile olur, ve ben olmuştur bir kaç dakika için resimsel hile 788 00:37:35,150 --> 00:37:35,800 İşte. 789 00:37:35,800 --> 00:37:40,950 Yani gerçekten, ben burada bir tane koymak istiyorsanız, Ben geçici olarak dört kopyalamak zorunda 790 00:37:40,950 --> 00:37:43,030 ve daha sonra oraya bir tane koyun. 791 00:37:43,030 --> 00:37:45,500 >> Yani, bu doğru, gayet Bu, teknik olarak mümkün değil 792 00:37:45,500 --> 00:37:48,410 ama bu ekstra bir iş gerçekleştirmek. 793 00:37:48,410 --> 00:37:50,460 Ben sadece bir yerde numarayı koymadı. 794 00:37:50,460 --> 00:37:53,026 Önce bir hareket vardı sayı, sonra bir yere koyun 795 00:37:53,026 --> 00:37:54,650 bu yüzden tür iş benim miktarını iki katına çıktı. 796 00:37:54,650 --> 00:37:55,660 Yani akılda tutmak. 797 00:37:55,660 --> 00:37:57,120 >> Ama şimdi bu eleman ile işim bitti. 798 00:37:57,120 --> 00:37:59,056 Şimdi üç numarayı kapmak istiyorum. 799 00:37:59,056 --> 00:38:00,430 Nerede, tabii ki aittir? 800 00:38:00,430 --> 00:38:01,480 Arasında. 801 00:38:01,480 --> 00:38:03,650 Artık hile olamaz ve sadece orada koymak 802 00:38:03,650 --> 00:38:06,770 Yine, bu belleğin çünkü fiziksel konumlarda olduğunu. 803 00:38:06,770 --> 00:38:10,900 Yani dört kopyalamak zorunda ve buraya üç koyun. 804 00:38:10,900 --> 00:38:11,550 Önemli bir şey değil. 805 00:38:11,550 --> 00:38:14,610 Sadece bir ilave adım vasıtasıyla yine çok ucuz hisseder. 806 00:38:14,610 --> 00:38:16,445 >> Ama şimdi iki hareket. 807 00:38:16,445 --> 00:38:17,820 İki, tabii ki, buraya ait. 808 00:38:17,820 --> 00:38:20,990 Şimdi nasıl görmeye başlarsınız iş birikmesine neden olabilirler. 809 00:38:20,990 --> 00:38:23,520 Şimdi ne yapmam gerekiyor? 810 00:38:23,520 --> 00:38:28,570 Evet, dört taşımak zorunda, Sonra, üç kopyalamak zorunda 811 00:38:28,570 --> 00:38:31,200 ve şimdi iki ekleyebilirsiniz. 812 00:38:31,200 --> 00:38:34,460 Ve bu ile yakalamak algoritması, ilginç bir şekilde, 813 00:38:34,460 --> 00:38:41,050 biz bir daha aşırı var varsayalım s sekiz, yedi diyelim var durum, 814 00:38:41,050 --> 00:38:45,150 altı, beş, dört, üç, iki, bir. 815 00:38:45,150 --> 00:38:49,450 Bu, birçok bağlamda, bir, En kötü durum senaryosu, 816 00:38:49,450 --> 00:38:51,570 lanetlemek şey çünkü kelimenin tam anlamıyla geriye olduğunu. 817 00:38:51,570 --> 00:38:53,670 >> Gerçekten değil Ben'in algoritması etkiler 818 00:38:53,670 --> 00:38:55,940 Çünkü Ben'in seçiminde sıralama o tutacak 819 00:38:55,940 --> 00:38:58,359 ileri ve geri listede geçiyor. 820 00:38:58,359 --> 00:39:01,150 Ve hep arıyordum çünkü Bütün kalan Listede, 821 00:39:01,150 --> 00:39:02,858 önemli değil elemanları burada. 822 00:39:02,858 --> 00:39:05,630 Ama yerleştirilmesi, bu durumda approach-- şunu deneyelim. 823 00:39:05,630 --> 00:39:08,616 >> Bu yüzden, bir, iki, üç, dört, beş, altı, yedi, sekiz. 824 00:39:08,616 --> 00:39:11,630 Bir iki üç dört, beş, altı, yedi, sekiz. 825 00:39:11,630 --> 00:39:14,320 Ben, sekiz almaya gidiyorum ve nerede koymak mı? 826 00:39:14,320 --> 00:39:17,260 Eh, benim listesinin başında, Bu yeni liste sıralanır çünkü. 827 00:39:17,260 --> 00:39:18,760 Ve ben bunu çapraz. 828 00:39:18,760 --> 00:39:20,551 >> Nerede yedi koyuyorsun? 829 00:39:20,551 --> 00:39:21,050 Kahretsin. 830 00:39:21,050 --> 00:39:23,174 Bu, oraya gitmek gerekiyor bu yüzden Bazı kopyalama yapmak zorunda. 831 00:39:23,174 --> 00:39:26,820 832 00:39:26,820 --> 00:39:28,480 Ve şimdi yedi buraya. 833 00:39:28,480 --> 00:39:29,860 Şimdi altı geçmek. 834 00:39:29,860 --> 00:39:30,980 Şimdi bile daha fazla iş var. 835 00:39:30,980 --> 00:39:32,570 >> Sekiz buraya gitmek zorunda. 836 00:39:32,570 --> 00:39:33,920 Yedi buraya gitmek zorunda. 837 00:39:33,920 --> 00:39:35,450 Şimdi altı buradan gidebilirsiniz. 838 00:39:35,450 --> 00:39:37,950 Şimdi beş yakala. 839 00:39:37,950 --> 00:39:40,560 Şimdi sekiz gitmek zorunda Burada, yedi buraya gitmek zorunda, 840 00:39:40,560 --> 00:39:43,650 Altı buraya gitmek zorunda, ve şimdi beş ve tekrarlayın. 841 00:39:43,650 --> 00:39:46,610 Ve hemen hemen değilim Sürekli taşımak. 842 00:39:46,610 --> 00:39:52,950 >> Yani sonunda, bu algorithm-- yaparız Ekleme aslında sort-- diyoruz 843 00:39:52,950 --> 00:39:55,020 çok bir sürü iş vardır. 844 00:39:55,020 --> 00:39:56,970 Sadece farklı Ben'in daha işin çeşit. 845 00:39:56,970 --> 00:40:00,090 Ben'in işi bana gidiş vardı ileri geri her zaman, 846 00:40:00,090 --> 00:40:03,510 En küçük bir sonraki seçme eleman tekrar tekrar. 847 00:40:03,510 --> 00:40:06,660 Bu yüzden işin bu çok görsel nazikti. 848 00:40:06,660 --> 00:40:10,600 >> hala Bu, diğer algoritma correct-- bu işi alacak done-- 849 00:40:10,600 --> 00:40:12,800 sadece iş miktarını değiştirir. 850 00:40:12,800 --> 00:40:15,420 Başlangıçta sen gibi görünüyor Sadece çünkü, tasarruf 851 00:40:15,420 --> 00:40:19,190 her elemanın ile ilgili ön tüm yürüme olmadan 852 00:40:19,190 --> 00:40:20,930 Ben gibi Listede yoluydu. 853 00:40:20,930 --> 00:40:25,300 Ama sorun, özellikle bu içinde olduğu hepsi geriye bu deli durumlarda, 854 00:40:25,300 --> 00:40:27,830 Eğer tür sadece konum zor iş ertelenmesi 855 00:40:27,830 --> 00:40:30,360 Eğer hataları düzeltmek zorunda kadar. 856 00:40:30,360 --> 00:40:33,919 >> Ve bu yüzden eğer bu hayal edebiliyorum sekiz ve yedi ve altı ve beş 857 00:40:33,919 --> 00:40:36,710 ve daha sonra dört, üç, iki Listede kendi yolunu hareketli, 858 00:40:36,710 --> 00:40:39,060 biz sadece değiştirdik işin türü biz yapıyoruz. 859 00:40:39,060 --> 00:40:42,340 Yerine de bunu yapmanın Benim yinelemenin başlayan 860 00:40:42,340 --> 00:40:45,250 Ben sadece bunu yapıyorum her yineleme sonu. 861 00:40:45,250 --> 00:40:50,550 Bu yüzden, bu algoritma çıkıyor Çok genel olarak adlandırılan ekleme sıralama, 862 00:40:50,550 --> 00:40:52,190 kare n sırasına da. 863 00:40:52,190 --> 00:40:56,480 Bu, daha iyi aslında daha iyi vasıl tüm. 864 00:40:56,480 --> 00:41:00,810 >> Ancak, üçüncü bir yaklaşım var Ben, düşünmeye bizi teşvik edecek 865 00:41:00,810 --> 00:41:02,970 hangi budur. 866 00:41:02,970 --> 00:41:07,850 Yani basitlik için, listemi varsayalım Yine, dört, bir, üç, 867 00:41:07,850 --> 00:41:11,080 sadece dört sayı iki--. 868 00:41:11,080 --> 00:41:13,300 Ben, iyi bir sezgi vardı iyi insan sezgi 869 00:41:13,300 --> 00:41:16,340 önce, hangi biz bütün sabit eventually-- ekleme sıralama listesi. 870 00:41:16,340 --> 00:41:18,020 Bizi birlikte sürülmesi. 871 00:41:18,020 --> 00:41:22,530 Ama düşünelim Bu listeyi düzeltmek için basit yolu. 872 00:41:22,530 --> 00:41:24,110 >> Bu liste sıralanır. 873 00:41:24,110 --> 00:41:26,130 Niye ya? 874 00:41:26,130 --> 00:41:31,920 İngilizce, niçin aslında sıralanmış değil. 875 00:41:31,920 --> 00:41:33,400 sıralanmasını değil ne anlama geliyor? 876 00:41:33,400 --> 00:41:34,220 >> ÖĞRENCİ: Bu sıralı değil. 877 00:41:34,220 --> 00:41:34,990 >> DAVID MALAN: sıralı değil. 878 00:41:34,990 --> 00:41:35,822 Bana bir örnek ver. 879 00:41:35,822 --> 00:41:37,180 >> ÖĞRENCİ: sırayla koyun. 880 00:41:37,180 --> 00:41:37,440 >> DAVID MALAN: Tamam. 881 00:41:37,440 --> 00:41:38,790 Bana bir daha spesifik bir örnek verin. 882 00:41:38,790 --> 00:41:39,832 >> ÖĞRENCİ: sipariş Artan. 883 00:41:39,832 --> 00:41:41,206 DAVID MALAN: küçükten büyüğe değil. 884 00:41:41,206 --> 00:41:42,100 daha hassas olması. 885 00:41:42,100 --> 00:41:45,190 Ne yükselerek ne demek bilmiyorum. 886 00:41:45,190 --> 00:41:47,150 Sorun nedir? 887 00:41:47,150 --> 00:41:49,930 >> ÖĞRENCİ: küçük numaraları birinci boşluk değildir. 888 00:41:49,930 --> 00:41:51,140 >> DAVID MALAN: Küçük sayı en ilk değil uzayda. 889 00:41:51,140 --> 00:41:52,120 Daha spesifik ol. 890 00:41:52,120 --> 00:41:55,000 Ben yakalamak için başlıyorum. 891 00:41:55,000 --> 00:41:59,470 Biz sayma, ama konum Burada sıra dışı ne var? 892 00:41:59,470 --> 00:42:00,707 >> ÖĞRENCİ: Sayısal dizisi. 893 00:42:00,707 --> 00:42:02,040 DAVID MALAN: Sayısal dizisi. 894 00:42:02,040 --> 00:42:04,248 tutma Herkesin tür Çok yüksek düzeyde Doğuların. 895 00:42:04,248 --> 00:42:07,450 Sadece tam anlamıyla ne olduğunu söyle beş yaşındaki kudretinin gibi yanlış. 896 00:42:07,450 --> 00:42:08,310 >> ÖĞRENCİ: Artı bir. 897 00:42:08,310 --> 00:42:08,750 >> DAVID MALAN: Bu nedir? 898 00:42:08,750 --> 00:42:09,610 >> ÖĞRENCİ: Artı bir. 899 00:42:09,610 --> 00:42:11,235 >> DAVID MALAN: Ne artı bir demek istiyorsun? 900 00:42:11,235 --> 00:42:12,754 901 00:42:12,754 --> 00:42:14,170 bana farklı bir beş yaşındaki verin. 902 00:42:14,170 --> 00:42:16,840 903 00:42:16,840 --> 00:42:18,330 Yanlış, anne nedir? 904 00:42:18,330 --> 00:42:19,940 Yanlış, baba nedir? 905 00:42:19,940 --> 00:42:22,808 Eğer bu sıralama değil de ne demek? 906 00:42:22,808 --> 00:42:24,370 >> ÖĞRENCİ: Doğru yer değil. 907 00:42:24,370 --> 00:42:25,580 >> DAVID MALAN: neler var değil doğru yerde? 908 00:42:25,580 --> 00:42:26,174 >> ÖĞRENCİ: Dört. 909 00:42:26,174 --> 00:42:27,090 DAVID MALAN: Tamam, güzel. 910 00:42:27,090 --> 00:42:29,110 olması gereken yerde Yani dört değil. 911 00:42:29,110 --> 00:42:30,590 Özellikle, bu doğru mu? 912 00:42:30,590 --> 00:42:33,000 Dört ve bir birinci Gördüğüm iki sayı. 913 00:42:33,000 --> 00:42:34,930 Bu doğru mu? 914 00:42:34,930 --> 00:42:36,427 Hayır, onlar sıra dışı, değil mi? 915 00:42:36,427 --> 00:42:38,135 Aslında, şimdi düşünüyorum de bir bilgisayar hakkında. 916 00:42:38,135 --> 00:42:40,824 Sadece, belki biri bakabilirsiniz once-- belki iki şey 917 00:42:40,824 --> 00:42:43,240 ve aslında tek bir şey Bir seferde, ama can en azından 918 00:42:43,240 --> 00:42:45,790 bir şeye daha sonra bakmak hemen yanındaki sonraki şey. 919 00:42:45,790 --> 00:42:47,380 >> Peki bu sırayla mı? 920 00:42:47,380 --> 00:42:48,032 Tabii ki değil. 921 00:42:48,032 --> 00:42:48,740 Yani biliyor musun? 922 00:42:48,740 --> 00:42:51,020 Neden bebeği yapmayız Bu sorunu giderme adımları 923 00:42:51,020 --> 00:42:53,410 Bunun yerine, bu fantezi yapıyor Ben gibi algoritmalar 924 00:42:53,410 --> 00:42:56,440 O tür bunu tamir ediyor Listede döngü 925 00:42:56,440 --> 00:42:59,670 Bunun yerine, nerede ne yaptığını yapıyor Biz gitmek gibi sadece tür sabit? 926 00:42:59,670 --> 00:43:03,650 Sadece tam anlamıyla yıkmak edelim order-- numara sırasına kavramı, 927 00:43:03,650 --> 00:43:06,990 Eğer zaman-- ne diyoruz Bu ikili karşılaştırmalar içine. 928 00:43:06,990 --> 00:43:07,590 >> Dört ve bir. 929 00:43:07,590 --> 00:43:09,970 Bu doğru sıralama var mı? 930 00:43:09,970 --> 00:43:11,310 Yani bunu düzeltmek edelim. 931 00:43:11,310 --> 00:43:14,700 Bir ile dört, ve daha sonra biz sadece kopya edeceğiz. 932 00:43:14,700 --> 00:43:15,560 Pekala, iyi. 933 00:43:15,560 --> 00:43:17,022 Bir ve dört sabit. 934 00:43:17,022 --> 00:43:18,320 Üç ve iki? 935 00:43:18,320 --> 00:43:18,820 Yok hayır. 936 00:43:18,820 --> 00:43:21,690 benim sözlerim benim parmak maç olsun. 937 00:43:21,690 --> 00:43:23,695 Dört ve üç? 938 00:43:23,695 --> 00:43:27,930 >> Bu sırayla değil, bu yüzden ben gidiyorum birini üç, dört, iki yapmak. 939 00:43:27,930 --> 00:43:28,680 Tamam iyi. 940 00:43:28,680 --> 00:43:32,310 Şimdi dört ve iki? 941 00:43:32,310 --> 00:43:33,370 Biz de bunu düzeltmek gerekir. 942 00:43:33,370 --> 00:43:36,700 Yani bir, üç, iki, dört. 943 00:43:36,700 --> 00:43:39,820 Yani sıralanır? 944 00:43:39,820 --> 00:43:43,170 Hayır, ama bu sıralama daha yakın? 945 00:43:43,170 --> 00:43:48,930 >> Bu sabit, çünkü bir hata, biz, bu hatayı sabit 946 00:43:48,930 --> 00:43:50,370 ve biz bu hatayı düzelttim. 947 00:43:50,370 --> 00:43:52,420 Bu yüzden belki üç hata düzeltildi. 948 00:43:52,420 --> 00:43:58,100 Hala gerçekten sıralı bakmak değil, o sıralı nesnel yakın 949 00:43:58,100 --> 00:44:00,080 Biz bu hataları bazı sabit çünkü. 950 00:44:00,080 --> 00:44:02,047 >> Şimdi ne yapacağım? 951 00:44:02,047 --> 00:44:03,630 Ben tür listesinin sonuna ulaştı. 952 00:44:03,630 --> 00:44:05,680 Ben sabit gibiydi Tüm hatalar, ama hayır. 953 00:44:05,680 --> 00:44:08,510 Bu durumda, bazı numaralar için yakın yukarı kabarmış olabilir 954 00:44:08,510 --> 00:44:10,410 diğer numaralara bozuk hala. 955 00:44:10,410 --> 00:44:12,951 O yüzden tekrar yapalım ve ben olacak sadece bir yerde bu sefer bunu. 956 00:44:12,951 --> 00:44:14,170 Bir ve üç? 957 00:44:14,170 --> 00:44:14,720 Bu iyi. 958 00:44:14,720 --> 00:44:16,070 Üç ve iki? 959 00:44:16,070 --> 00:44:17,560 Tabii ki hayır, o yüzden bunu değiştirmek edelim. 960 00:44:17,560 --> 00:44:19,160 Yani iki, üç. 961 00:44:19,160 --> 00:44:21,340 Üç ve dört? 962 00:44:21,340 --> 00:44:24,370 Ve şimdi sadece olalım Burada özellikle bilgiçlik. 963 00:44:24,370 --> 00:44:26,350 o sıralanır? 964 00:44:26,350 --> 00:44:29,280 Siz insanlar bunun sıralanmış biliyorum. 965 00:44:29,280 --> 00:44:30,400 >> Tekrar denemek gerekir. 966 00:44:30,400 --> 00:44:31,900 Yani Olivia tekrar deneyin öneriyor. 967 00:44:31,900 --> 00:44:32,530 Niye ya? 968 00:44:32,530 --> 00:44:35,810 Bir bilgisayar olmadığından insan gözlerinin lüks 969 00:44:35,810 --> 00:44:38,080 sadece back-- Tamam bakarak, ben bittim. 970 00:44:38,080 --> 00:44:41,610 Nasıl bilgisayar belirliyor Listede sıralanır? 971 00:44:41,610 --> 00:44:44,590 Mekanik. 972 00:44:44,590 --> 00:44:47,650 >> Ben geçmesi gerekir Bir kez daha, sadece eğer 973 00:44:47,650 --> 00:44:51,190 Ben herhangi bir hata bulmak / olabilir yapmayın Daha sonra yep, bilgisayar gibi sonuçlandırmak, 974 00:44:51,190 --> 00:44:51,980 biz gitmek için iyi bir konum. 975 00:44:51,980 --> 00:44:54,850 Yani bir ve iki, iki ve üç, üç ve dört. 976 00:44:54,850 --> 00:44:58,030 Şimdi kesinlikle bu olduğunu söyleyebiliriz Ben hiçbir değişiklik yaptı, çünkü sıralanır. 977 00:44:58,030 --> 00:45:01,940 Şimdi bir hata olması ve sadece olurdu aptalca eğer ben, bilgisayar, 978 00:45:01,940 --> 00:45:05,640 Yine bu aynı sorular farklı cevaplar bekliyor. 979 00:45:05,640 --> 00:45:07,110 olmamalı. 980 00:45:07,110 --> 00:45:08,600 >> Ve şimdi liste sıralanır. 981 00:45:08,600 --> 00:45:12,630 Ne yazık ki, çalışma süresi Bu algoritma da kare: n. 982 00:45:12,630 --> 00:45:13,130 Niye ya? 983 00:45:13,130 --> 00:45:19,520 Eğer n numaraları ve var çünkü En kötü durumda size n numaralarını taşımak zorunda 984 00:45:19,520 --> 00:45:23,637 n kere gidiyorsun tutmak zorunda çünkü tekrar kontrol etmek ve potansiyel düzeltmek 985 00:45:23,637 --> 00:45:24,220 Bu rakamlar. 986 00:45:24,220 --> 00:45:26,280 Ve biz daha fazlasını yapabiliriz Çok resmi analiz. 987 00:45:26,280 --> 00:45:29,530 >> Yani bu attık demek hepsi bu Üç farklı uygulamalar, tek 988 00:45:29,530 --> 00:45:32,210 Bunlardan hemen kolay Ben gelen yarasa kapalı 989 00:45:32,210 --> 00:45:35,170 Benim önerilen yerleştirilmeden Bu bir tür 990 00:45:35,170 --> 00:45:38,540 ne tür gözden kaybetmek nerede Başlangıçta ağaçlar için orman. 991 00:45:38,540 --> 00:45:41,760 Ama sonra, bir adım geri almak durumunda işte, biz sıralama kavramı çözdüm. 992 00:45:41,760 --> 00:45:43,824 Yani bu, söylemek cesaret olduğunu daha düşük bir seviyede belki 993 00:45:43,824 --> 00:45:45,740 Bu diğer bazıları daha algoritmalar, ama hadi 994 00:45:45,740 --> 00:45:48,550 Biz görselleştirmek olamaz görmek Bu arada, bu. 995 00:45:48,550 --> 00:45:51,450 >> Yani bu biraz güzel Yazılım birisi 996 00:45:51,450 --> 00:45:56,110 bu renkli çubuklar kullanarak yazdı Bizim için aşağıdakileri yapacak. 997 00:45:56,110 --> 00:45:57,736 Bu çubukların her biri bir sayısını gösterir. 998 00:45:57,736 --> 00:46:00,026 Daha büyük, bar uzun boylu sayı, küçük bar, 999 00:46:00,026 --> 00:46:00,990 sayı daha küçük. 1000 00:46:00,990 --> 00:46:05,880 Yani ideal güzel bir piramit istiyorum küçük başlar ve büyük alır nerede, 1001 00:46:05,880 --> 00:46:08,330 ve bu anlamına gelecektir Bu çubuklar sıralanır. 1002 00:46:08,330 --> 00:46:11,200 Bu yüzden, go ahead ve seçmek için gidiyorum Örneğin, Ben algoritması 1003 00:46:11,200 --> 00:46:13,990 birinci-- seçim sıralama. 1004 00:46:13,990 --> 00:46:16,220 >> Ve ne yaptığını fark. 1005 00:46:16,220 --> 00:46:18,670 onlar seçtiniz yolu Bu algoritma görselleştirmek 1006 00:46:18,670 --> 00:46:22,090 Benim gibi, yani listemde yürürken, 1007 00:46:22,090 --> 00:46:24,710 bu program yürüyor numaraları listesine sayesinde, 1008 00:46:24,710 --> 00:46:28,160 pembe her vurgulayarak o bakıyor numara. 1009 00:46:28,160 --> 00:46:32,360 Ve hemen gerçekleşmesi gereken ne hakkında? 1010 00:46:32,360 --> 00:46:35,154 >> küçük sayı o Ben ya da ben aniden bulundu 1011 00:46:35,154 --> 00:46:36,820 Listenin başında taşındı alır. 1012 00:46:36,820 --> 00:46:40,037 Ve onlar tahliye yaptılar Bildirimi orada numarası 1013 00:46:40,037 --> 00:46:41,120 ve o mükemmel para cezası. 1014 00:46:41,120 --> 00:46:42,600 Ben ayrıntı bu düzeyde alamadım. 1015 00:46:42,600 --> 00:46:44,308 Ama biz koymak gerekir bir yerde bu sayı, 1016 00:46:44,308 --> 00:46:47,775 böylece biz sadece onu taşındı oluşturulan açık nokta. 1017 00:46:47,775 --> 00:46:49,900 Yani bu hızlandırmak için gidiyorum yukarı, aksi takdirde bunun nedeni 1018 00:46:49,900 --> 00:46:51,871 kısa sürede çok sıkıcı olur. 1019 00:46:51,871 --> 00:46:55,800 1020 00:46:55,800 --> 00:46:58,600 Animasyon oraya hız-- gidiyoruz. 1021 00:46:58,600 --> 00:47:01,850 Şimdi aynı prensip Ben uygulayarak, ama sen 1022 00:47:01,850 --> 00:47:06,540 eğer, algoritma hissetmeye başlayabilirsiniz olacak, ya da biraz daha net görüyorum. 1023 00:47:06,540 --> 00:47:13,190 Bu algoritma etkisine sahiptir Bir sonraki en küçük elemanı seçerek, 1024 00:47:13,190 --> 00:47:16,422 böylece başlamak için gidiyoruz soldaki yukarı rampa bkz. 1025 00:47:16,422 --> 00:47:19,130 Ve her tekrarında, ben Önerilen, biraz daha az iş yapar. 1026 00:47:19,130 --> 00:47:21,921 Bu tüm yol gitmek zorunda değildir geri listenin sol ucuna, 1027 00:47:21,921 --> 00:47:23,900 zaten çünkü sıralanır olanlar bilir. 1028 00:47:23,900 --> 00:47:28,129 öyle gibi Dolayısıyla bu tür hissediyor Her bir adım olmasına rağmen, hızlandırıcı 1029 00:47:28,129 --> 00:47:29,420 zaman aynı miktarda alarak. 1030 00:47:29,420 --> 00:47:31,600 Geri kalan sadece az adımlar var. 1031 00:47:31,600 --> 00:47:35,240 Ve şimdi biraz hissedebilirsiniz algoritması, bunun sonu temizlik 1032 00:47:35,240 --> 00:47:37,040 ve gerçekten de şimdi sıralanmış oluyor. 1033 00:47:37,040 --> 00:47:41,620 >> Yani ekleme sıralama tüm yapılır. 1034 00:47:41,620 --> 00:47:43,600 Ben dizi yeniden randomize gerekir. 1035 00:47:43,600 --> 00:47:45,940 Ve fark ben sadece can Bunu rastgele tutmak, 1036 00:47:45,940 --> 00:47:50,630 ve biz bir yaklaşım alırsınız Aynı yaklaşım, ekleme sıralama. 1037 00:47:50,630 --> 00:47:55,050 Beni burada onu yavaşlatmak edelim. 1038 00:47:55,050 --> 00:47:56,915 en bu baştan başlayalım. 1039 00:47:56,915 --> 00:47:57,414 Dur. 1040 00:47:57,414 --> 00:48:00,662 1041 00:48:00,662 --> 00:48:02,410 >> en dört geçelim. 1042 00:48:02,410 --> 00:48:03,200 Oraya gidiyoruz. 1043 00:48:03,200 --> 00:48:04,190 Münafık dizi Rastgele. 1044 00:48:04,190 --> 00:48:05,555 Ve burada ekleme tür go--. 1045 00:48:05,555 --> 00:48:10,260 1046 00:48:10,260 --> 00:48:12,800 Oyun. 1047 00:48:12,800 --> 00:48:17,280 her ile uğraşan var dikkat edin o hemen karşılaştığında eleman, 1048 00:48:17,280 --> 00:48:20,282 ama içinde aitse yanlış yer bildirimi 1049 00:48:20,282 --> 00:48:21,740 ne var işin tüm. 1050 00:48:21,740 --> 00:48:24,700 Biz daha değişen tutmak zorunda ve daha fazla öğe yer açmak için 1051 00:48:24,700 --> 00:48:27,340 biri için biz yerine koymak istiyorum. 1052 00:48:27,340 --> 00:48:30,740 >> Bu yüzden odaklanıyoruz listenin sadece sol ucunu. 1053 00:48:30,740 --> 00:48:34,460 biz bile biz at-- bakmadım Fark Pembe bir şey vurgulanan değil 1054 00:48:34,460 --> 00:48:35,610 sağa. 1055 00:48:35,610 --> 00:48:38,180 Biz sadece ile uğraşıyoruz sorunları biz, gitmek gibi 1056 00:48:38,180 --> 00:48:40,430 ama biz bir sürü oluştururken hala kendimiz için çalışmak. 1057 00:48:40,430 --> 00:48:44,410 Ve biz bu hızlandırmak eğer öyleyse Şimdi tamamlanması gitmek için, 1058 00:48:44,410 --> 00:48:46,210 gerçekten buna farklı bir havası vardır. 1059 00:48:46,210 --> 00:48:50,150 Sadece sol ucunda odaklanarak var ama needed-- olarak biraz daha iş yapıyor 1060 00:48:50,150 --> 00:48:53,230 yumuşatma şeyler tür üzerinde, şeyleri tamir, 1061 00:48:53,230 --> 00:48:58,350 fakat sonuçta uğraşan Bir anda her eleman bir 1062 00:48:58,350 --> 00:49:07,740 biz de Şeyin için elde edene kadar, biz Bütün bu sona erecek biliyorum, 1063 00:49:07,740 --> 00:49:09,700 yüzden biraz underwhelming belki var. 1064 00:49:09,700 --> 00:49:12,830 >> Ama end-- liste spoiler-- sıralanabilir gidiyor. 1065 00:49:12,830 --> 00:49:15,300 Yani bir sonuncusu bakalım. 1066 00:49:15,300 --> 00:49:16,840 Biz sadece şimdi atlamayı olamaz. 1067 00:49:16,840 --> 00:49:18,000 Neredeyse geldik. 1068 00:49:18,000 --> 00:49:19,980 İki kimse gitmek, gitmek için. 1069 00:49:19,980 --> 00:49:22,680 Ve işte. 1070 00:49:22,680 --> 00:49:23,450 Mükemmel. 1071 00:49:23,450 --> 00:49:27,220 >> Yani şimdi en son birini yapalım, yeniden randomizing kabarcık sıralama ile. 1072 00:49:27,220 --> 00:49:31,690 Ve bunu yavaş, özellikle burada fark aşağı, bu sayede swooping devam etmez. 1073 00:49:31,690 --> 00:49:36,830 Ama sadece pairwise yapar fark yerel çözümler comparisons-- tür. 1074 00:49:36,830 --> 00:49:39,050 Ama en kısa sürede biz olsun Pembe listenin sonuna, 1075 00:49:39,050 --> 00:49:40,690 Ne tekrar yaşanmaması zorunda olacak? 1076 00:49:40,690 --> 00:49:44,539 1077 00:49:44,539 --> 00:49:46,830 Evet, öyle olmak zorunda olacak , Baştan başlamak çünkü o sadece 1078 00:49:46,830 --> 00:49:49,870 sabit ikili hatalar. 1079 00:49:49,870 --> 00:49:53,120 Ve bu henüz diğerleri tarafından ortaya çıkarılmış olabilir. 1080 00:49:53,120 --> 00:49:58,950 Bu hızlandırmak Ve eğer öyleyse, sen olacak , Adından da anlaşılacağı kadar, görüyoruz 1081 00:49:58,950 --> 00:50:01,870 , Öğelerin-- küçük ya da daha doğrusu Büyük öğelerin-- başlıyor 1082 00:50:01,870 --> 00:50:03,740 kabarcık tepesine kadar, eğer sen. 1083 00:50:03,740 --> 00:50:07,380 Ve küçük elemanları aşağı sola kabarcık başlıyor. 1084 00:50:07,380 --> 00:50:10,780 Ve gerçekten de, bu tür var yanı sıra görsel efekt. 1085 00:50:10,780 --> 00:50:17,150 Ve böylece bu terbiye sona erecek çok çok benzer bir şekilde, içinde. 1086 00:50:17,150 --> 00:50:19,160 >> Biz yaşamak zorunda değilsiniz Bu özel biri. 1087 00:50:19,160 --> 00:50:21,010 ben de, şimdi bu açalım. 1088 00:50:21,010 --> 00:50:24,040 birkaç diğer sıralama algoritmaları var Dünyada birkaç olan 1089 00:50:24,040 --> 00:50:25,580 Burada yakalanır. 1090 00:50:25,580 --> 00:50:29,960 Ve özellikle öğrenciler için kim değil mutlaka görsel veya matematiksel, 1091 00:50:29,960 --> 00:50:31,930 Daha önce yaptığımız gibi, biz Ayrıca İşitme bunu 1092 00:50:31,930 --> 00:50:34,210 Bu bir ses ilişkilendirmek ise. 1093 00:50:34,210 --> 00:50:36,990 Ve sadece eğlence için, burada bir Birkaç farklı algoritmalar, 1094 00:50:36,990 --> 00:50:40,950 sen Özellikle bunlardan biri ve denir fark edecek "birleştirme sıralama." 1095 00:50:40,950 --> 00:50:43,250 >> Aslında bir temelde Daha iyi algoritma, 1096 00:50:43,250 --> 00:50:45,860 Bir çeşit birleştirme böyle görmek üzereyiz olanlar, 1097 00:50:45,860 --> 00:50:49,170 kare n sırası değil. 1098 00:50:49,170 --> 00:50:57,280 Bu n kere giriş sırasına var aslında daha küçük ve bu nedenle N, 1099 00:50:57,280 --> 00:50:58,940 bu diğer üçü daha hızlı. 1100 00:50:58,940 --> 00:51:00,670 Ve diğer bir çift var göreceğiz aptal olanlar. 1101 00:51:00,670 --> 00:51:01,933 >> Yani burada bazı ses ile gitmek. 1102 00:51:01,933 --> 00:51:06,620 1103 00:51:06,620 --> 00:51:10,490 Bu yüzden tekrar ekleme tür Sadece elemanları ile uğraşıyor 1104 00:51:10,490 --> 00:51:13,420 Geldikleri gibi. 1105 00:51:13,420 --> 00:51:17,180 Bu kabarcık sıralama, bu yüzden var Onlara bir seferde çiftleri dikkate. 1106 00:51:17,180 --> 00:51:22,030 1107 00:51:22,030 --> 00:51:24,490 Ve yine, büyük elemanlar tepesine kadar köpüren olan. 1108 00:51:24,490 --> 00:51:38,098 1109 00:51:38,098 --> 00:51:41,710 >> yukarı sonraki seçim sıralama. 1110 00:51:41,710 --> 00:51:45,420 Bu Ben'in algoritmasıdır yine o yinelemeli seçerek ediyor 1111 00:51:45,420 --> 00:51:46,843 Bir sonraki en küçük öğesi. 1112 00:51:46,843 --> 00:51:49,801 1113 00:51:49,801 --> 00:51:53,900 Ve yine, şimdi gerçekten duyabiliyorum o ancak şimdiye kadar hızlandırmak oluyor 1114 00:51:53,900 --> 00:51:58,230 daha az ve daha az yapıyor olarak her tekrarında çalışır. 1115 00:51:58,230 --> 00:52:04,170 Bu daha hızlı biridir, birleştirmeli sıralama, sayı kümeleri sıralama olduğu 1116 00:52:04,170 --> 00:52:05,971 Birlikte ve sonra bunları birleştirerek. 1117 00:52:05,971 --> 00:52:07,720 Yani sol Bak-- Yarım zaten sıralanır. 1118 00:52:07,720 --> 00:52:14,165 >> Şimdi sağ yarısını sıralama ve var şimdi onları birleştiren tek gidiyor. 1119 00:52:14,165 --> 00:52:19,160 Bu denilen şey "Gnome sort." 1120 00:52:19,160 --> 00:52:23,460 Ve ne tür olduğunu görebilirsiniz o, ileri ve geri gidiyor 1121 00:52:23,460 --> 00:52:27,950 biraz burada işi sabitleme ve yeni iş orada devam önce. 1122 00:52:27,950 --> 00:52:32,900 1123 00:52:32,900 --> 00:52:33,692 Ve bu kadar. 1124 00:52:33,692 --> 00:52:36,400 başka bir tür var, gerçekten sadece akademik amaçlı, 1125 00:52:36,400 --> 00:52:40,980 alır "aptal sıralama," denir veri, rastgele sıralar 1126 00:52:40,980 --> 00:52:43,350 o sıralanır ve eğer sonra denetler. 1127 00:52:43,350 --> 00:52:47,880 eğer değilse ve bu yeniden sıralar onu o sıralanmış eğer rastgele denetler, 1128 00:52:47,880 --> 00:52:49,440 ve tekrar değilse. 1129 00:52:49,440 --> 00:52:52,660 Ve teorik olarak, olasılıksal Bu, tamamlayacak 1130 00:52:52,660 --> 00:52:54,140 ancak zaman biraz sonra. 1131 00:52:54,140 --> 00:52:56,930 Çoğu değil algoritmaların etkili. 1132 00:52:56,930 --> 00:53:02,550 olanlara Böylece herhangi bir soru Belirli algoritmalar ya da bir şey 1133 00:53:02,550 --> 00:53:04,720 de orada ilgili? 1134 00:53:04,720 --> 00:53:09,430 >> Peki, şimdi ne dışında tüm kızdırmak izin Bu satırlar Ben çizim oldum vardır 1135 00:53:09,430 --> 00:53:15,090 ve ne bilgisayar varsayarak yaşıyorum başlık altında yapabilirsiniz. 1136 00:53:15,090 --> 00:53:18,650 Ben bu sayıların hepsi iddia ediyorum Ben onlar almak gerekiyor drawing-- tutmak 1137 00:53:18,650 --> 00:53:21,330 belleğinde bir yerde saklanır. 1138 00:53:21,330 --> 00:53:24,130 Biz de şimdi bu adam kurtulmak gerekir. 1139 00:53:24,130 --> 00:53:30,110 >> Bir bellek Yani bir parça RAM kadar DIMM computer-- 1140 00:53:30,110 --> 00:53:35,480 Dün, çift aradıklarınızı Bu gibi görünüyor module-- sıralı bellek. 1141 00:53:35,480 --> 00:53:39,370 Ve bu küçük siyah cips her Tipik haliyle, bayt bir sayıdır. 1142 00:53:39,370 --> 00:53:44,380 Ve sonra altın iğneler gibi bilgisayara bağlayın teller, 1143 00:53:44,380 --> 00:53:47,521 ve yeşil silisyum kurulu sadece bir tüm ne her şeyi birlikte tutar. 1144 00:53:47,521 --> 00:53:48,770 Peki bu gerçekten ne anlama geliyor? 1145 00:53:48,770 --> 00:53:53,180 Ben biraz bu aynı resim çizmek için, en basitlik için varsayalım 1146 00:53:53,180 --> 00:53:55,280 Bu DIMM, çift olduğunu sıralı bellek modülü, 1147 00:53:55,280 --> 00:54:00,530 RAM bir gigabayt, bir gigabayt kaç bayt toplam hafıza,? 1148 00:54:00,530 --> 00:54:02,100 Bir gigabayt kaç bayt? 1149 00:54:02,100 --> 00:54:04,860 1150 00:54:04,860 --> 00:54:06,030 Daha Fazlası. 1151 00:54:06,030 --> 00:54:09,960 1124, kilo 1.000 olduğunu. 1152 00:54:09,960 --> 00:54:11,730 Mega milyon. 1153 00:54:11,730 --> 00:54:14,570 Giga bir milyar dolar. 1154 00:54:14,570 --> 00:54:15,070 >> Yalan muyum? 1155 00:54:15,070 --> 00:54:16,670 biz bile etiket okuyabilir miyim? 1156 00:54:16,670 --> 00:54:19,920 Bu aslında 128 gigabayt, yani daha var. 1157 00:54:19,920 --> 00:54:22,130 Ama biz bu taklit edeceğiz Sadece bir gigabayt olduğunu. 1158 00:54:22,130 --> 00:54:25,640 anlamına Yani bir milyar var Bana kullanılabilir bellek bayt 1159 00:54:25,640 --> 00:54:29,770 ya da 8 milyar bit, ama biz gidiyoruz Şimdi bayt açısından konuşmak, 1160 00:54:29,770 --> 00:54:30,750 ileriye doğru hareket. 1161 00:54:30,750 --> 00:54:36,330 >> Peki anlamına gelir bu olduğunu bir byte, bu başka bir bayt, 1162 00:54:36,330 --> 00:54:38,680 bu başka bir bayt, ve biz gerçekten isteseydi 1163 00:54:38,680 --> 00:54:43,280 biz olurdu belirli olması Bir milyar küçük kareler çizin. 1164 00:54:43,280 --> 00:54:44,320 Ama bu ne anlama geliyor? 1165 00:54:44,320 --> 00:54:46,420 Peki, beni sadece Büyütmek izin Bu resimde de. 1166 00:54:46,420 --> 00:54:50,900 Ben bir şey var ise o görünüyor Bu şimdi olduğu gibi, o dört bayt var. 1167 00:54:50,900 --> 00:54:53,710 >> Ve bu yüzden burada dört numara koymak olabilir. 1168 00:54:53,710 --> 00:54:54,990 Bir iki üç dört. 1169 00:54:54,990 --> 00:55:00,170 Ya da ben dört harf veya sembolleri koymak olabilir. 1170 00:55:00,170 --> 00:55:02,620 "Hey!" Orada gidebiliriz, harflerin her biri için, 1171 00:55:02,620 --> 00:55:04,370 Biz, daha önce tartışılan temsil edilebilir 1172 00:55:04,370 --> 00:55:06,650 Sekiz bit ya da ASCII veya bir byte ile. 1173 00:55:06,650 --> 00:55:09,370 Yani diğer bir deyişle, yapabilirsiniz içeride 8 milyar şeyler koymak 1174 00:55:09,370 --> 00:55:11,137 bellek bu bir sopa. 1175 00:55:11,137 --> 00:55:14,345 Şimdi geri şeyler koymak için ne anlama geliyor Böyle bellekte geri geri? 1176 00:55:14,345 --> 00:55:17,330 Bu ne bir programcı Bir "dizi." çağırır 1177 00:55:17,330 --> 00:55:21,250 Bir bilgisayar programında, sanmıyorum altta yatan donanım hakkında, haddi zatında. 1178 00:55:21,250 --> 00:55:24,427 sahip olarak sadece kendiniz düşünmek Bir milyar bayt toplam erişim, 1179 00:55:24,427 --> 00:55:26,010 ve hiçbir şey onunla istediğiniz olabilir. 1180 00:55:26,010 --> 00:55:27,880 Ama kolaylık sağlamak için genellikle kullanışlı 1181 00:55:27,880 --> 00:55:31,202 Bellek saklı tutar için Böyle yanyana. 1182 00:55:31,202 --> 00:55:33,660 Yani bu-- yakınlaştırmak ise biz kesinlikle gitmiyoruz çünkü 1183 00:55:33,660 --> 00:55:39,310 Bir milyar küçük squares-- çizmek için Şimdi bu kurul temsil varsayalım 1184 00:55:39,310 --> 00:55:40,610 Şimdi bellek sopa. 1185 00:55:40,610 --> 00:55:43,800 Ve ben gibi birçok şekilde çekersiniz benim işaretleyici beni buraya vererek biter. 1186 00:55:43,800 --> 00:55:46,420 1187 00:55:46,420 --> 00:55:52,300 Yani şimdi bir sopa var gemide bellek 1188 00:55:52,300 --> 00:55:56,400 Bu var bir, iki, üç, dört, beş, altı, bir, iki, üç, dört, beş, altı, 1189 00:55:56,400 --> 00:56:01,130 bu yüzden 42 bayt yedi-- Ekran toplam bellek. 1190 00:56:01,130 --> 00:56:01,630 Teşekkür ederim. 1191 00:56:01,630 --> 00:56:02,838 Evet, benim aritmetik doğru yaptım. 1192 00:56:02,838 --> 00:56:05,120 Burada bellek Yani 42 bayt. 1193 00:56:05,120 --> 00:56:06,660 Yani bu aslında ne anlama geliyor? 1194 00:56:06,660 --> 00:56:09,830 Eh, bir bilgisayar programcısı olur aslında genel olarak 1195 00:56:09,830 --> 00:56:12,450 adreslenebilir olarak bu bellek düşünüyorum. 1196 00:56:12,450 --> 00:56:16,630 Diğer bir deyişle, bu, her bir bellekteki yerleri, donanım, 1197 00:56:16,630 --> 00:56:18,030 benzersiz bir adresi vardır. 1198 00:56:18,030 --> 00:56:22,020 >> Bu Bir Brattle kadar karmaşık değil Kare, Cambridge, Mass., 02138. 1199 00:56:22,020 --> 00:56:23,830 Bunun yerine, o sadece bir sayı var. 1200 00:56:23,830 --> 00:56:27,930 Bu bayt sayısı sıfır, bu ise Bir, İki ve bu da üçtür 1201 00:56:27,930 --> 00:56:30,327 ve 41 olduğu. 1202 00:56:30,327 --> 00:56:30,910 Bir dakika bekle. 1203 00:56:30,910 --> 00:56:32,510 Ben bir an önce 42 söylemiştin. 1204 00:56:32,510 --> 00:56:35,050 1205 00:56:35,050 --> 00:56:37,772 Ben, sıfırdan saymaya başladı böylece aslında doğru. 1206 00:56:37,772 --> 00:56:40,980 Şimdi biz aslında çizmek gerek yok bir ızgara olarak ve bir ızgara olarak çizerseniz 1207 00:56:40,980 --> 00:56:43,520 Ben şeyler aslında düşünüyorum biraz yanıltıcı olsun. 1208 00:56:43,520 --> 00:56:46,650 Ne bir programcı olur, kendi zihninde, 1209 00:56:46,650 --> 00:56:50,310 genellikle bu düşünüyorum Bellek sadece bir kaset gibi olduğu, 1210 00:56:50,310 --> 00:56:53,340 maskeleme bandı bir parçası gibi sadece ve üzerinde sonsuza kadar gider 1211 00:56:53,340 --> 00:56:54,980 ya da bellek bitene kadar. 1212 00:56:54,980 --> 00:56:59,200 Yani bir daha yaygın yolu çizmek için ve sadece bellekte düşünmek 1213 00:56:59,200 --> 00:57:03,710 Bu bayt sıfır, biri olacağını, iki, üç ve daha sonra, nokta nokta nokta. 1214 00:57:03,710 --> 00:57:07,650 Ve hatta, 42 tür bayt toplam sahip fiziksel aslında ama belki 1215 00:57:07,650 --> 00:57:09,480 Bunun gibi daha bir şey. 1216 00:57:09,480 --> 00:57:12,850 >> Şimdi düşünüyorum Yani senin hafıza Bu gibi sadece bir kaset gibi, 1217 00:57:12,850 --> 00:57:17,640 Bu ne bir programcı yine belleğin bir dizi çağırır. 1218 00:57:17,640 --> 00:57:20,660 Ve aslında saklamak istediğinizde Bir bilgisayarın belleğinde bir şey, 1219 00:57:20,660 --> 00:57:23,290 genellikle mağaza şeyler back-to-back back-to-back. 1220 00:57:23,290 --> 00:57:25,010 Bu yüzden numaraları hakkında konuşuyorduk. 1221 00:57:25,010 --> 00:57:30,880 Ve ben istediğim zaman sorunları çözmek için gibi dört, bir, üç, iki, 1222 00:57:30,880 --> 00:57:33,820 Hatta sadece çizim olsa Sadece sayılar dört, bir, üç, 1223 00:57:33,820 --> 00:57:39,490 Gemide iki bilgisayar olur Gerçekten bellekte bu kurulum var. 1224 00:57:39,490 --> 00:57:43,347 >> Ve yanında ne olurdu bilgisayarın belleğinde iki? 1225 00:57:43,347 --> 00:57:44,680 Eh, buna cevap yok. 1226 00:57:44,680 --> 00:57:45,770 Biz gerçekten bilmiyoruz. 1227 00:57:45,770 --> 00:57:48,200 Ve sürece bilgisayar ihtiyacı yok, 1228 00:57:48,200 --> 00:57:51,440 Bir sonraki ne o umurumda zorunda değildir sayılara bu bakım ile ilgili yok. 1229 00:57:51,440 --> 00:57:55,130 Ve ben daha önce bir bilgisayarda olduğunu söyledi bir seferde sadece tek bir adrese bakabilirsiniz, 1230 00:57:55,130 --> 00:57:56,170 Bu yüzden türüdür. 1231 00:57:56,170 --> 00:57:59,490 >> Değil bir kayda aksine çalar ve bir okuma kafası 1232 00:57:59,490 --> 00:58:03,030 sadece belirli bir bakmak edememek fiziksel eski okul kayıtlarında oluk 1233 00:58:03,030 --> 00:58:06,500 Aynı anda, benzer şekilde Bir bilgisayar sayesinde can 1234 00:58:06,500 --> 00:58:09,810 onun CPU ve onun için Intel komut seti, 1235 00:58:09,810 --> 00:58:12,480 kimin talimat arasında bellekten okunur 1236 00:58:12,480 --> 00:58:15,590 veya bir memory-- kaydetmek Bilgisayar yalnızca bakabilirsiniz 1237 00:58:15,590 --> 00:58:19,210 Bir olan Zamanın az bir yerde Bazen bunların bir kombinasyonu, 1238 00:58:19,210 --> 00:58:21,770 ancak bir seferde gerçekten sadece bir konum. 1239 00:58:21,770 --> 00:58:24,770 Ne zaman yaptıklarını Bu çeşitli algoritmalar, 1240 00:58:24,770 --> 00:58:28,110 Ben sadece bir yazma değilim vacuum-- dört, bir, üç, iki. 1241 00:58:28,110 --> 00:58:30,849 Bu numaraları aslında aittir bellek fiziksel yerde. 1242 00:58:30,849 --> 00:58:32,890 Yani küçücük vardır transistörler veya bir çeşit 1243 00:58:32,890 --> 00:58:35,840 altında elektronik davlumbaz, bu değerleri saklamak. 1244 00:58:35,840 --> 00:58:40,460 >> Ve toplamda kaç bit Şu anda dahil, sadece temiz olması için? 1245 00:58:40,460 --> 00:58:45,580 Yani bu dört bayt veya şimdi 32 bit toplam bulunuyor. 1246 00:58:45,580 --> 00:58:49,280 Yani aslında 32 sıfır vardır ve Bu dört şeyi oluşturan olanlar. 1247 00:58:49,280 --> 00:58:52,070 Buraya daha var, ama Yine biz bu umurumda değil. 1248 00:58:52,070 --> 00:58:55,120 >> Yani şimdi Başka bir soralım bellek kullanarak soru, 1249 00:58:55,120 --> 00:58:57,519 sonunda çünkü Günün Varyans yer almaktadır. 1250 00:58:57,519 --> 00:59:00,310 Ne olursa olsun biz yapmak ne olabilir Günün sonunda bilgisayar 1251 00:59:00,310 --> 00:59:02,560 donanım hala başlık altında aynı. 1252 00:59:02,560 --> 00:59:04,670 Buradan nasıl bir kelime saklamak ki? 1253 00:59:04,670 --> 00:59:09,710 Eh, bir bilgisayarda bir kelime gibi "Hey!" sadece bu gibi saklanır. 1254 00:59:09,710 --> 00:59:12,300 Ve daha uzun isteseydi kelime, sadece can 1255 00:59:12,300 --> 00:59:19,120 Bu üzerine ve bir şeyler söylemek Burada "Merhaba" ve mağaza gibi. 1256 00:59:19,120 --> 00:59:23,930 >> Ve böylece burada da, bu contiguousness bir avantaj, aslında 1257 00:59:23,930 --> 00:59:26,530 Bir bilgisayar sadece can çünkü sağdan sola doğru okunan. 1258 00:59:26,530 --> 00:59:28,680 Ama burada bir soru. 1259 00:59:28,680 --> 00:59:33,480 bu kelime bağlamında, h-e-l-l-o, ünlem, 1260 00:59:33,480 --> 00:59:38,740 bilgisayar nerede nasıl kelime başlar ve kelime nerede biter? 1261 00:59:38,740 --> 00:59:41,690 1262 00:59:41,690 --> 00:59:43,800 numaraları bağlamında, nasıl bilgisayar yapar 1263 00:59:43,800 --> 00:59:48,396 know how dizisi uzun sayılar ya nerede başlar? 1264 00:59:48,396 --> 00:59:50,270 Eh, out-- döner ve biz çok fazla gitmeyecek 1265 00:59:50,270 --> 00:59:54,970 detail-- bu seviyeye bilgisayarların hafızasında etrafında malzeme taşımak 1266 00:59:54,970 --> 00:59:57,800 kelimenin tam anlamıyla bu adreslerin yoluyla. 1267 00:59:57,800 --> 01:00:02,080 sen eğer bir bilgisayarda Yani kod yazma şeyleri saklamak için 1268 01:00:02,080 --> 01:00:05,800 kelimeler gibi, ne olduğunu Gerçekten yazmaya yapıyor 1269 01:00:05,800 --> 01:00:11,320 hatırlar ifadeler Bilgisayarın hafızası bu kelimelerdir. 1270 01:00:11,320 --> 01:00:14,370 Bu yüzden bana çok bir yapayım, çok basit bir örnek. 1271 01:00:14,370 --> 01:00:18,260 >> Ben devam edeceğim ve basit bir metin programı açmak, 1272 01:00:18,260 --> 01:00:20,330 ve ben yaratmak için gidiyorum Bir dosya merhaba.c denir. 1273 01:00:20,330 --> 01:00:22,849 Bu bilgilerin çoğu biz çok detaylı girmeyeceğim, 1274 01:00:22,849 --> 01:00:25,140 ama yazmak için gidiyorum Aynı dilde program 1275 01:00:25,140 --> 01:00:31,140 C. Bu, çok daha korkutucu Ben, Scratch daha iddia ediyorum 1276 01:00:31,140 --> 01:00:32,490 ama ruhu içinde çok benzer. 1277 01:00:32,490 --> 01:00:34,364 Aslında, bu küme braces-- yapabilirsiniz tür 1278 01:00:34,364 --> 01:00:37,820 Ben sadece bu kadar ne yaptığını düşünüyorum. 1279 01:00:37,820 --> 01:00:39,240 >> en doğrusu, bu yapalım. 1280 01:00:39,240 --> 01:00:45,100 Yeşil bayrak tıklandığında, aşağıdakileri yapın. 1281 01:00:45,100 --> 01:00:50,210 Ben yazdırmak istiyorum "merhaba." 1282 01:00:50,210 --> 01:00:51,500 Yani bu şimdi pseudocode olduğunu. 1283 01:00:51,500 --> 01:00:53,000 Ben tür hatları bulanıklık var. 1284 01:00:53,000 --> 01:00:56,750 C, bu dil konuşuyorum yaklaşık bu hat baskı merhaba 1285 01:00:56,750 --> 01:01:01,940 aslında "printf" ile olur Bazı parantezler ve yarı-kolon. 1286 01:01:01,940 --> 01:01:03,480 >> Ama aynı fikir. 1287 01:01:03,480 --> 01:01:06,730 Ve bu derece kullanıcı dostu "Yeşil bayrak tıklandığında" olur 1288 01:01:06,730 --> 01:01:10,182 çok daha gizemli "int main boşluk." 1289 01:01:10,182 --> 01:01:12,890 Ve bu gerçekten hiç eşlemesi, bu yüzden sadece bu görmezden gidiyorum. 1290 01:01:12,890 --> 01:01:17,210 Ama kaşlı gibidir Böyle kavisli puzzle parçaları. 1291 01:01:17,210 --> 01:01:18,700 >> Yani yapabilirsiniz tür sanırım. 1292 01:01:18,700 --> 01:01:22,357 Hatta, daha önce programlanmış hiç eğer Bu program muhtemelen ne yapıyor? 1293 01:01:22,357 --> 01:01:25,560 1294 01:01:25,560 --> 01:01:28,000 Muhtemelen merhaba yazdırır bir ünlem işareti ile. 1295 01:01:28,000 --> 01:01:29,150 >> Yani o deneyelim. 1296 01:01:29,150 --> 01:01:30,800 Ben onu kurtarmak için gidiyorum. 1297 01:01:30,800 --> 01:01:34,000 Ve bu yine çok olduğunu eski okul ortamı. 1298 01:01:34,000 --> 01:01:35,420 Ben sürüklemek değil, tıklayın olamaz. 1299 01:01:35,420 --> 01:01:36,910 Ben komutları yazmanız gerekir. 1300 01:01:36,910 --> 01:01:41,320 Bu yüzden, bu yüzden benim programı çalıştırmak istiyorum Ben hello.c gibi, bunu yapmak olabilir. 1301 01:01:41,320 --> 01:01:42,292 Ben koştum dosya. 1302 01:01:42,292 --> 01:01:43,500 Ama bir adım eksik, bekleyin. 1303 01:01:43,500 --> 01:01:46,470 Ne yaptık ki bir gerekli C gibi bir dil için adım? 1304 01:01:46,470 --> 01:01:49,470 Ben sadece kaynak yazdım Kod, ama ne ihtiyacım var? 1305 01:01:49,470 --> 01:01:50,670 Evet, ben bir derleyici gerekir. 1306 01:01:50,670 --> 01:01:57,670 Burada benim Mac Yani, ben bir GCC çağrılan program, GNU C derleyicisi, 1307 01:01:57,670 --> 01:02:03,990 hangi bana paha dönüş yapmanızı sağlar Benim kaynak kodu içine, biz onu arayacağım, 1308 01:02:03,990 --> 01:02:04,930 Makine kodu. 1309 01:02:04,930 --> 01:02:10,180 >> Ve bunu görebiliyorum, Yine, aşağıdaki şekilde, bu 1310 01:02:10,180 --> 01:02:14,090 sıfırlar ve olanları ben sadece benim kaynak kodundan oluşturulan 1311 01:02:14,090 --> 01:02:15,730 sıfırlar ve olanları bütün. 1312 01:02:15,730 --> 01:02:17,770 Ve ben çalıştırmak istiyorsanız benim program-- o olur 1313 01:02:17,770 --> 01:02:23,010 için a.out çağrılacak Tarihsel reasons-- "Merhaba." 1314 01:02:23,010 --> 01:02:24,070 Tekrar çalıştırabilirsiniz. 1315 01:02:24,070 --> 01:02:25,690 Merhaba Merhaba Merhaba. 1316 01:02:25,690 --> 01:02:27,430 Ve çalışıyor gibi görünüyor. 1317 01:02:27,430 --> 01:02:31,000 >> Ama bu bir yere gelir benim Bilgisayarın hafızası kelimeler 1318 01:02:31,000 --> 01:02:35,279 h-e-l-l-o, ünlem. 1319 01:02:35,279 --> 01:02:38,070 Ve bu, bir kenara, sadece bir olarak, çıkıyor ne bir bilgisayar zamanki 1320 01:02:38,070 --> 01:02:40,550 bu yüzden bilir nerede bunu şeyler başlatmak ve bu kadar end-- 1321 01:02:40,550 --> 01:02:42,460 Burada özel bir sembol koymak için gidiyor. 1322 01:02:42,460 --> 01:02:46,064 Ve kongre koymaktır Bir kelimenin sonundaki sayısı sıfırdır 1323 01:02:46,064 --> 01:02:48,230 Bunu nereden biliyorsun ki Aslında, biter, böylece 1324 01:02:48,230 --> 01:02:52,750 Daha fazla ve daha fazla baskı tutmayın senden karakterler aslında niyetinde. 1325 01:02:52,750 --> 01:02:55,400 >> Ama burada paket, hatta Bu oldukça gizemli olsa, 1326 01:02:55,400 --> 01:02:58,140 sonuçta olmasıdır nispeten basit. 1327 01:02:58,140 --> 01:03:04,550 Sen, bir boş bir kaset tür verildi Harfleri yazabilir hangi alanı. 1328 01:03:04,550 --> 01:03:07,150 Sadece bir olması keyfi gibi özel sembol, 1329 01:03:07,150 --> 01:03:10,316 sayısı sıfır, sonunda koymak sözlerin bilgisayar bilmesi, 1330 01:03:10,316 --> 01:03:13,410 oh, sonra yazdırmayı durdurmak gerekir Ben ünlem bakın. 1331 01:03:13,410 --> 01:03:16,090 Orada sonraki şey, çünkü sıfır ASCII değeridir 1332 01:03:16,090 --> 01:03:19,125 veya null karakter olarak Birisi çağırır. 1333 01:03:19,125 --> 01:03:21,500 Ama bir problem tür var Burada, ve geri dönmek edelim 1334 01:03:21,500 --> 01:03:23,320 Bir an için numaraları. 1335 01:03:23,320 --> 01:03:28,720 Yapmam varsayalım, aslında, , Sayılar bir dizi var 1336 01:03:28,720 --> 01:03:30,730 ve varsayalım Ben yazıyorum programı 1337 01:03:30,730 --> 01:03:34,680 Bir öğretmen için bir not defteri gibi ve öğretmenler sınıf. 1338 01:03:34,680 --> 01:03:38,720 Ve bu program ona izin verir öğrencilerinin puanlarını yazmak için 1339 01:03:38,720 --> 01:03:39,960 testleriyle ilgili. 1340 01:03:39,960 --> 01:03:43,750 Ve öğrenci aldığını varsayalım ilk sınavda 100, belki 1341 01:03:43,750 --> 01:03:49,920 Daha sonra bir sonraki birinde bir 80 gibi 75, daha sonra dördüncü sınavda 90. 1342 01:03:49,920 --> 01:03:54,150 >> Hikayenin bu noktasında Yani, Dizi boyutu dört taşımaktadır. 1343 01:03:54,150 --> 01:03:58,470 kesinlikle daha fazla bellek içinde var Bilgisayar, fakat dizi, tabiri caizse, 1344 01:03:58,470 --> 01:04:00,350 büyüklüğü dört taşımaktadır. 1345 01:04:00,350 --> 01:04:06,060 Öğretmen istediği şimdi varsayalım sınıfa beşinci sınav atamak. 1346 01:04:06,060 --> 01:04:08,510 Eh, şeylerden biri o ya da o yapmak zorunda olacak 1347 01:04:08,510 --> 01:04:10,650 şimdi burada bir ek değer saklamak olduğunu. 1348 01:04:10,650 --> 01:04:15,490 Ama dizinin eğer öğretmen vardır Bu programda oluşturulan, için boyut taşımaktadır 1349 01:04:15,490 --> 01:04:22,440 bir dizi ile sorunlardan biri olduğunu Sadece belleğe eklemeye devam edemez. 1350 01:04:22,440 --> 01:04:26,470 Çünkü ne olur başka bir parçası Program orada "hey" kelimesini vardır? 1351 01:04:26,470 --> 01:04:29,650 >> Diğer bir deyişle, zaman bellek olabilir Bir programda herhangi bir şey için kullanılır. 1352 01:04:29,650 --> 01:04:33,250 Ve önceden ben, hey, yazdığınız takdirde Ben girdi, dört sınav puanları istiyorum, 1353 01:04:33,250 --> 01:04:34,784 Burada ve burada gidebilir. 1354 01:04:34,784 --> 01:04:37,700 Ve aniden fikrinizi değiştirirseniz Daha sonra ben beşinci sınav istediğini söylüyorsun 1355 01:04:37,700 --> 01:04:40,872 Skor, yapamazsın sadece istediğiniz yere koyun, 1356 01:04:40,872 --> 01:04:42,580 Çünkü bu ne varsa Bellek kullanılıyor 1357 01:04:42,580 --> 01:04:45,990 bir şey için başka bir program else-- ya da programın başka bir özelliği, 1358 01:04:45,990 --> 01:04:46,910 çalıştırıyorsanız bu mu? 1359 01:04:46,910 --> 01:04:50,650 Yani önceden düşünmek zorunda Eğer veri depolamak istiyorum nasıl, 1360 01:04:50,650 --> 01:04:54,480 Şimdi boyalı çünkü Kendinizi bir dijital köşeye. 1361 01:04:54,480 --> 01:04:57,280 >> Yani bir öğretmen yerine olabilir Bir program yazarken demek 1362 01:04:57,280 --> 01:04:59,360 saklamak için onun sınıflarda, biliyor musun? 1363 01:04:59,360 --> 01:05:04,180 Ben, istemek için gidiyorum benim program yazarken, 1364 01:05:04,180 --> 01:05:12,070 Ben istiyorum sıfır, bir, iki, üç, dört, beş, altı, sekiz notları toplam. 1365 01:05:12,070 --> 01:05:15,320 Bu yüzden, bir, iki, üç, dört, beş, altı, yedi, sekiz. 1366 01:05:15,320 --> 01:05:18,612 Öğretmen sadece aşırı ayırabilirsiniz Bellek kendi programını yazarken 1367 01:05:18,612 --> 01:05:19,570 ve ne biliyorsun, demek? 1368 01:05:19,570 --> 01:05:22,236 Ben asla daha atamak için gidiyorum Bir dönem sekiz sınavlar daha. 1369 01:05:22,236 --> 01:05:23,130 Bu sadece deli. 1370 01:05:23,130 --> 01:05:24,470 Bunu ayırmak asla. 1371 01:05:24,470 --> 01:05:28,270 bu şekilde o sahip olacak şekilde mağaza öğrenci puanları esneklik, 1372 01:05:28,270 --> 01:05:33,010 75, 90, ve belki biri ekstra gibi Öğrenci, 105 ekstra kredi var. 1373 01:05:33,010 --> 01:05:36,130 >> Ama eğer öğretmen asla Bu üç boşluk kullanır, 1374 01:05:36,130 --> 01:05:38,860 Burada sezgisel bir paket var. 1375 01:05:38,860 --> 01:05:41,410 O ya da o sadece alanı israf edilmektedir. 1376 01:05:41,410 --> 01:05:44,790 Bu yüzden, diğer bir deyişle, orada programlama ortak takas 1377 01:05:44,790 --> 01:05:48,241 ya tahsis nerede tam olarak çok bellek istediğiniz gibi, 1378 01:05:48,241 --> 01:05:51,490 başaşağı süper olman efficient-- sen savurgan değilsin 1379 01:05:51,490 --> 01:05:54,640 at Bay Kane ama olumsuz ne fikrini ne zaman değiştirirseniz 1380 01:05:54,640 --> 01:05:58,780 Saklamak istediğiniz programı kullanarak Senden daha fazla veri başlangıçta amaçlanan. 1381 01:05:58,780 --> 01:06:03,030 >> Yani belki çözüm daha sonra ise Böyle bir şekilde programlar yazmak 1382 01:06:03,030 --> 01:06:05,605 Onlar daha fazla bellek kullandığını aslında ihtiyacınız olandan. 1383 01:06:05,605 --> 01:06:07,730 Eğer gitmiyorsun Bu şekilde Bu sorun haline çalıştırmak için, 1384 01:06:07,730 --> 01:06:09,730 ama savurgan davranıyorsun. 1385 01:06:09,730 --> 01:06:12,960 Ve programın kullandığı daha fazla bellek, Dün konuştuğumuz gibi, daha az 1386 01:06:12,960 --> 01:06:15,410 kullanılabilir bellek Diğer programlar için, 1387 01:06:15,410 --> 01:06:18,790 er bilgisayar yavaşlatabilir aşağı nedeniyle sanal bellek. 1388 01:06:18,790 --> 01:06:22,670 Ve böylece ideal bir çözüm olabilir ne? 1389 01:06:22,670 --> 01:06:24,610 >> Altı tahsisi kötü görünüyor. 1390 01:06:24,610 --> 01:06:27,030 Aşırı tahsis kötü görünüyor. 1391 01:06:27,030 --> 01:06:31,120 Peki daha iyi bir çözüm olabilir? 1392 01:06:31,120 --> 01:06:32,390 Yeniden tahsis. 1393 01:06:32,390 --> 01:06:33,590 Daha dinamik olun. 1394 01:06:33,590 --> 01:06:37,520 Bir seçim kendinizi zorlamayın priori, başında ne istiyorsun. 1395 01:06:37,520 --> 01:06:41,370 Ve elbette, aşırı tahsis yok Size diye savurgan olmak. 1396 01:06:41,370 --> 01:06:45,770 >> Ve böylece bu hedefe ulaşmak için, biz Bu veri yapısı atmak gerekir, 1397 01:06:45,770 --> 01:06:48,100 öylesine uzakta, konuşmak için. 1398 01:06:48,100 --> 01:06:51,080 Ve böylece ne bir programcı tipik kullanacak 1399 01:06:51,080 --> 01:06:55,940 değil bir şekilde adlandırılır Dizi ama bir bağlantılı liste. 1400 01:06:55,940 --> 01:07:00,860 Başka bir deyişle, o olacak kendi hafıza düşünmeye başlar 1401 01:07:00,860 --> 01:07:05,280 Bir şeklin olmak tür olarak onlar şu şekilde çizebilirsiniz. 1402 01:07:05,280 --> 01:07:08,520 Ben bir numara saklamak isterseniz o Eylül yüzden bir program--, 1403 01:07:08,520 --> 01:07:12,600 Ben öğrencilere bir sınav verdik; istiyorum Öğrencilerin ilk sınav saklamak için, 1404 01:07:12,600 --> 01:07:16,220 ve onlar dökersin-- I bir 100 var benim bilgisayar soracağım, 1405 01:07:16,220 --> 01:07:19,540 Birkaç gün önce programın yoluyla belleğin bir parça için, yazılı. 1406 01:07:19,540 --> 01:07:22,570 Ve ben saklamak için gidiyorum İçinde sayı 100, ve o kadar. 1407 01:07:22,570 --> 01:07:24,820 >> Sonra birkaç hafta sonra Benim ikinci sınav olsun, 1408 01:07:24,820 --> 01:07:27,890 ve tip zamanı Bu% 90, ben gidiyorum 1409 01:07:27,890 --> 01:07:32,129 Bilgisayarı sormak, hey, bilgisayar, Ben bellek başka öbek olabilir? 1410 01:07:32,129 --> 01:07:34,170 Bana bunu vermek için gidiyor bellek boş yığın. 1411 01:07:34,170 --> 01:07:39,370 Ben, sayı 90 koymak için gidiyorum ama benim programda bir şekilde ya da other-- 1412 01:07:39,370 --> 01:07:42,100 ve biz endişelenecek olmayacak İhtiyacım bu-- sözdizimi 1413 01:07:42,100 --> 01:07:44,430 her nasılsa birlikte bunları zincir. 1414 01:07:44,430 --> 01:07:47,430 Ve ben birlikte onları zincir olacak burada ne bir ok gibi görünüyor. 1415 01:07:47,430 --> 01:07:50,050 >> çıkageldi üçüncü yarışması, Ben diyeceğim, hey, bilgisayar, 1416 01:07:50,050 --> 01:07:51,680 Bana bellek başka yığın verir. 1417 01:07:51,680 --> 01:07:54,660 Ve ben aşağı koymak için gidiyorum ne olursa olsun, 75 gibiydi 1418 01:07:54,660 --> 01:07:56,920 ve ben zinciri bu var Birlikte şimdi nasılsa. 1419 01:07:56,920 --> 01:08:00,290 Dördüncü yarışması birlikte geliyor ve belki Bu dönem sonuna doğru bu. 1420 01:08:00,290 --> 01:08:03,140 Ve bu noktada benim program tarafından bellek kullanıyor olabilir 1421 01:08:03,140 --> 01:08:05,540 biryere, her fiziksel bitti. 1422 01:08:05,540 --> 01:08:08,170 Ve bu yüzden sadece tekmeler, ben Bu ileri çekmek için gidiyor 1423 01:08:08,170 --> 01:08:11,260 quiz-- Ne olduğunu unutmak; ben belki düşünmek 80 veya şey-- 1424 01:08:11,260 --> 01:08:12,500 yolu buraya. 1425 01:08:12,500 --> 01:08:15,920 >> Ama bu, çünkü resimsel, gayet iyi Bu çizgi çizmek için gidiyorum. 1426 01:08:15,920 --> 01:08:19,063 Diğer bir deyişle, gerçekte, bilgisayarınızın donanım, 1427 01:08:19,063 --> 01:08:20,979 İlk puan olabilir öyle çünkü burada sona 1428 01:08:20,979 --> 01:08:22,529 Sağ dönem başında. 1429 01:08:22,529 --> 01:08:25,810 Bir sonraki burada sonunda olabilir zaman biraz geçti çünkü 1430 01:08:25,810 --> 01:08:27,210 ve program çalışırken tutar. 1431 01:08:27,210 --> 01:08:30,060 Ertesi skor, 75, buraya olabilir. 1432 01:08:30,060 --> 01:08:33,420 Ve son puan olabilir Buraya bir 80. 1433 01:08:33,420 --> 01:08:38,729 >> Yani gerçekte, fiziksel olarak, bu olabilir ne bilgisayarınızın bellek gibi görünüyor. 1434 01:08:38,729 --> 01:08:41,569 Ama bu kullanışlı zihinsel değil Bir bilgisayar programcısı için paradigma. 1435 01:08:41,569 --> 01:08:44,649 Neden nerede önemsemeliyiz halt veri biten nedir? 1436 01:08:44,649 --> 01:08:46,200 Sadece veri depolamak istiyor. 1437 01:08:46,200 --> 01:08:49,390 >> Bu bizim tartışma gibi tür olduğunu küp çizim önceki. 1438 01:08:49,390 --> 01:08:52,200 Neden umurunda ne açı küp olduğunu 1439 01:08:52,200 --> 01:08:53,740 ve bunu nasıl çizmek çevirmek zorunda? 1440 01:08:53,740 --> 01:08:54,950 Sadece bir küp istiyorum. 1441 01:08:54,950 --> 01:08:57,359 Benzer şekilde burada, seni Sadece sınıf defterine istiyorum. 1442 01:08:57,359 --> 01:08:59,559 Sadece düşünmek istiyorum numaralarının listesi olarak bu. 1443 01:08:59,559 --> 01:09:01,350 öyle nasıl kimin umurunda donanımda uygulanan? 1444 01:09:01,350 --> 01:09:05,180 >> Şimdi soyutlama Yani Burada bu resim. 1445 01:09:05,180 --> 01:09:07,580 Bu şekilde, liste bağlı bir edildi Bir programcı çağırır, 1446 01:09:07,580 --> 01:09:10,640 Eğer bir var sürece Liste, belli ki sayılar. 1447 01:09:10,640 --> 01:09:14,990 Ama resimsel bağlı olan Bu okların yoluyla, 1448 01:09:14,990 --> 01:09:18,510 ve tüm bu oklar altında mudur Kaput, meraklı iseniz, 1449 01:09:18,510 --> 01:09:23,210 fiziksel donanım sahip olduğunu hatırlamak adresleri, bir, iki, üç, dört sıfır. 1450 01:09:23,210 --> 01:09:28,465 Tüm bu oklar bir harita gibidir veya yön, eğer 90 o-- şimdi 1451 01:09:28,465 --> 01:09:29,090 Ben saymak lazım. 1452 01:09:29,090 --> 01:09:31,750 >> Sıfır, bir, iki, üç, dört, beş, altı, yedi. 1453 01:09:31,750 --> 01:09:35,640 90 gibi görünüyor bellek adres numarası yedi. 1454 01:09:35,640 --> 01:09:38,460 Tüm bu oklar are kağıt biraz hurda gibi 1455 01:09:38,460 --> 01:09:42,439 Buna yön veriyor Bu haritayı takip diyor programı 1456 01:09:42,439 --> 01:09:43,880 Konuma yedi almak için. 1457 01:09:43,880 --> 01:09:46,680 Ve orada bulacaksınız Öğrencinin ikinci sınav puanı. 1458 01:09:46,680 --> 01:09:52,100 Bu arada, 75-- ben bu devam ederse, Bu yedi, sekiz, dokuz, 10, 11, 12, 1459 01:09:52,100 --> 01:09:54,240 13, 14, 15. 1460 01:09:54,240 --> 01:09:59,080 >> Bu, diğer ok sadece temsil hafıza konumuna 15 bir harita. 1461 01:09:59,080 --> 01:10:02,550 Fakat yine de, programcı genellikle yapar detay bu düzeyde umurumda değil. 1462 01:10:02,550 --> 01:10:05,530 Ve en her programlama dil, bugün, programcı 1463 01:10:05,530 --> 01:10:10,490 hatta nerede bellekte bilemezsiniz Bu rakamlar aslında. 1464 01:10:10,490 --> 01:10:14,830 o sahip tüm hakkında bakım Onlar bir şekilde birbirine bağlantılı olduğunu 1465 01:10:14,830 --> 01:10:18,390 Böyle bir veri yapısı. 1466 01:10:18,390 --> 01:10:21,580 >> Ama öyle değil çıkıyor çok teknik olsun. 1467 01:10:21,580 --> 01:10:27,430 Ama sırf belki can Burada bu tartışma var göze, 1468 01:10:27,430 --> 01:10:33,630 Biz tekrar varsayalım Burada bir dizi bu sorunu. 1469 01:10:33,630 --> 01:10:35,780 biz burada olacak pişman olmadığını görelim. 1470 01:10:35,780 --> 01:10:42,950 Bu, 100, 90, 75 ve 80'dir. 1471 01:10:42,950 --> 01:10:44,980 >> Bana kısaca bu iddiayı yapalım. 1472 01:10:44,980 --> 01:10:48,980 Bu bir dizidir, ve yine, Bir dizinin göze çarpan özelliği 1473 01:10:48,980 --> 01:10:52,400 tüm verileri geri olmasıdır geri anlamıyla memory-- içinde geri 1474 01:10:52,400 --> 01:10:56,830 bir byte ya da belki dört bayt, uzak bayt bazı sabit sayısı. 1475 01:10:56,830 --> 01:11:00,710 Bağlantılı bir listede, biz çizmek olabilir Bu gibi başlık altında kim 1476 01:11:00,710 --> 01:11:02,000 O şeyler bilir nerede? 1477 01:11:02,000 --> 01:11:03,630 Hatta böyle bir akış gerek yoktur. 1478 01:11:03,630 --> 01:11:06,050 bazı verilerin olabilir Orada yukarı sola. 1479 01:11:06,050 --> 01:11:07,530 Sen bile bilmiyorsun. 1480 01:11:07,530 --> 01:11:15,430 >> Ve böylece bir dizi, bir var rasgele erişim olarak bilinen özellik. 1481 01:11:15,430 --> 01:11:20,570 Ve rasgele erişim aracıdır bilgisayar anında atlayabilir 1482 01:11:20,570 --> 01:11:22,730 Bir dizideki herhangi bir yere. 1483 01:11:22,730 --> 01:11:23,580 Niye ya? 1484 01:11:23,580 --> 01:11:26,000 bilgisayar biliyor çünkü İlk konum olduğunu 1485 01:11:26,000 --> 01:11:29,540 sıfır, bir, iki, üç. 1486 01:11:29,540 --> 01:11:33,890 >> Ve böylece gitmek istiyorum sonraki elemana bu element, 1487 01:11:33,890 --> 01:11:36,099 kelimenin tam anlamıyla, içinde Bilgisayarın aklı, sadece bir tane ekleyin. 1488 01:11:36,099 --> 01:11:39,140 Üçüncü öğeye gitmek istiyorsanız, Sadece, sadece, bir sonraki elemanın Şehre eklemek 1489 01:11:39,140 --> 01:11:40,290 bir tane ekle. 1490 01:11:40,290 --> 01:11:42,980 Ancak, bu sürümde Hikayenin, varsayalım 1491 01:11:42,980 --> 01:11:46,080 Bilgisayar şu anda arıyor ya da numara 100 ile ilgili. 1492 01:11:46,080 --> 01:11:49,770 Nasıl bir sonraki alabilirim sınıf kitabında notu? 1493 01:11:49,770 --> 01:11:52,560 >> Sen yedi almak zorunda keyfi adımlar. 1494 01:11:52,560 --> 01:11:58,120 bir sonrakine almak için gereken 15 almak için başka sekiz adımları atın. 1495 01:11:58,120 --> 01:12:02,250 Diğer bir deyişle, bir değil, sayılar arasındaki sürekli boşluk, 1496 01:12:02,250 --> 01:12:04,857 ve bu yüzden sadece sürer Bilgisayar daha fazla zaman noktasıdır. 1497 01:12:04,857 --> 01:12:06,940 bilgisayar aramak zorunda sırayla bellek üzerinden 1498 01:12:06,940 --> 01:12:08,990 Eğer aradığınızı bulmak için. 1499 01:12:08,990 --> 01:12:14,260 >> bir dizi bir olma eğilimindedir, oysa bu yüzden hızlı veri structure-- çünkü sen 1500 01:12:14,260 --> 01:12:17,610 gerçekten sadece basit aritmetik yapabilirsiniz ve bir ekleyerek istediğiniz yere almak, 1501 01:12:17,610 --> 01:12:21,300 bağlantılı liste instance-- için, Eğer bu özelliği feda. 1502 01:12:21,300 --> 01:12:24,020 Sadece birinci gidemez İkinci üçüncü dördüncü için. 1503 01:12:24,020 --> 01:12:25,240 Haritayı takip etmek zorunda. 1504 01:12:25,240 --> 01:12:28,160 Daha fazla adımlar atmak zorunda bu değerler, almak için hangi 1505 01:12:28,160 --> 01:12:30,230 bir maliyet ekleyerek gözükmektedir. 1506 01:12:30,230 --> 01:12:35,910 Bu yüzden bir fiyat ödeyerek, ama ne oldu konum Dan burada arayışında olduğunu özelliği? 1507 01:12:35,910 --> 01:12:38,110 Ne bağlantılı liste yapar görünüşe yapmamızı sağlayacak, 1508 01:12:38,110 --> 01:12:40,240 menşe oldu Bu özel bir hikaye? 1509 01:12:40,240 --> 01:12:43,250 1510 01:12:43,250 --> 01:12:43,830 >> Kesinlikle. 1511 01:12:43,830 --> 01:12:46,220 buna dinamik boyutu. 1512 01:12:46,220 --> 01:12:48,040 Biz bu listeye ekleyebilirsiniz. 1513 01:12:48,040 --> 01:12:51,430 Hatta bu yüzden, listeyi daraltmak için Biz sadece kadar bellek kullandığınızı 1514 01:12:51,430 --> 01:12:55,560 biz aslında istediğimiz gibi ve bu yüzden Biz aşırı tahsisi asla değilsin. 1515 01:12:55,560 --> 01:12:58,470 >> Şimdi sadece, gerçekten sirke-seçici olmak gizli bir maliyet var. 1516 01:12:58,470 --> 01:13:01,980 Yani sadece bana ikna izin vermemeliyiz Bu zorlayıcı bir takas olduğunu. 1517 01:13:01,980 --> 01:13:04,190 Burada başka bir gizli maliyet var. 1518 01:13:04,190 --> 01:13:06,550 yarar, açık olmak Biz dinamizm elde ediyoruz. 1519 01:13:06,550 --> 01:13:10,359 Başka bir eleman istiyorsanız, ben sadece can çizin ve orada bir numara koymak. 1520 01:13:10,359 --> 01:13:12,150 Ve sonra onu bağlayabilirsiniz Burada bir resim ile, 1521 01:13:12,150 --> 01:13:14,970 Buraya ise, yine, ben yasiyorsaniz Bir köşeye kendimi boyalı 1522 01:13:14,970 --> 01:13:19,410 başka bir şey zaten kullanıyorsa Burada bellek, ben şans bitti. 1523 01:13:19,410 --> 01:13:21,700 Ben köşeye kendimi boyadım. 1524 01:13:21,700 --> 01:13:24,390 >> Ama gizli ne Bu resimde maliyeti? 1525 01:13:24,390 --> 01:13:27,690 Sadece miktar değil Bu gereken zaman 1526 01:13:27,690 --> 01:13:29,870 Buradan buraya gitmek, bu daha sonra, yedi adım 1527 01:13:29,870 --> 01:13:32,820 Birden fazla sekiz adım. 1528 01:13:32,820 --> 01:13:34,830 Başka bir gizli maliyet nedir? 1529 01:13:34,830 --> 01:13:35,440 Sadece zaman. 1530 01:13:35,440 --> 01:13:44,790 1531 01:13:44,790 --> 01:13:49,940 Ek bilgi Gerektiğinde bu resmi elde etmek. 1532 01:13:49,940 --> 01:13:53,210 >> Evet, o harita, o küçük artıkları Kağıt, ben onları açıklayan tutmak gibi. 1533 01:13:53,210 --> 01:13:55,650 Bu arrows-- Bunlar serbest değildir. 1534 01:13:55,650 --> 01:13:57,660 Bildiğiniz bir computer-- Bir bilgisayar neler. 1535 01:13:57,660 --> 01:13:58,790 Bu sıfırları ve olanları vardır. 1536 01:13:58,790 --> 01:14:03,170 Eğer bir ok ya da temsil etmek isterseniz harita veya bir sayı, bazı bellek gerekir. 1537 01:14:03,170 --> 01:14:05,950 Diğer fiyata Yani Bağlantılı bir liste için ödeme, 1538 01:14:05,950 --> 01:14:09,070 ortak bir bilgisayar bilimi Kaynak, aynı zamanda alandır. 1539 01:14:09,070 --> 01:14:11,710 >> Nitekim bu yüzden, bu yüzden genel olarak, ödünleşmeler arasında 1540 01:14:11,710 --> 01:14:15,580 Yazılım mühendisliği tasarımı sistem zaman ve space-- olduğu 1541 01:14:15,580 --> 01:14:18,596 senin maddeler iki, iki En pahalı maddeler. 1542 01:14:18,596 --> 01:14:21,220 Bu bana daha fazla zaman mal oluyor Ben bu haritayı takip etmek zorunda, çünkü 1543 01:14:21,220 --> 01:14:25,730 ama aynı zamanda beni daha fazla alan mal oluyor Ben haritayı tutmak zorunda çünkü. 1544 01:14:25,730 --> 01:14:28,730 Yani umut olarak biz tür ettik dün ve bugün üzerinde tartışılan, 1545 01:14:28,730 --> 01:14:31,720 yararları olduğu maliyeti ağır olacak. 1546 01:14:31,720 --> 01:14:33,870 >> Ama burada hiçbir belirgin bir çözüm var. 1547 01:14:33,870 --> 01:14:35,870 Belki de better-- olduğunu a la hızlı ve kirli, 1548 01:14:35,870 --> 01:14:38,660 Kareem earlier-- önerildiği gibi Soruna bellek atmak. 1549 01:14:38,660 --> 01:14:42,520 Sadece daha fazla bellek satın daha az düşünüyorum problem çözme konusunda sert, 1550 01:14:42,520 --> 01:14:44,595 ve daha kolay bir şekilde bunu çözmek. 1551 01:14:44,595 --> 01:14:46,720 Ve gerçekten daha önce, ne zaman Biz ödünleşmeler hakkında konuştuk, 1552 01:14:46,720 --> 01:14:49,190 o boşluk değildi Bilgisayar ve zaman. 1553 01:14:49,190 --> 01:14:51,810 Bu geliştirici zaman, hangi başka kaynaktır. 1554 01:14:51,810 --> 01:14:54,829 >> Yani yine, bu denge var karar vermeye çalışırken şeylerden hangi 1555 01:14:54,829 --> 01:14:55,870 Eğer harcamaya istekli? 1556 01:14:55,870 --> 01:14:57,380 en ucuz hangisi? 1557 01:14:57,380 --> 01:15:01,040 Hangisi daha iyi sonuçlar verir? 1558 01:15:01,040 --> 01:15:01,540 Evet? 1559 01:15:01,540 --> 01:15:11,310 1560 01:15:11,310 --> 01:15:12,580 >> Aslında. 1561 01:15:12,580 --> 01:15:15,970 Bu durumda, eğer maps-- sayıları temsil 1562 01:15:15,970 --> 01:15:18,820 Bu, birçok dilde denir "Işaretçileri" veya "adresleri" - 1563 01:15:18,820 --> 01:15:20,390 o çift boşluk var. 1564 01:15:20,390 --> 01:15:24,390 Eğer çift olarak kötü olması gerekmez Şu anda biz sadece sayıları depolamak ediyoruz. 1565 01:15:24,390 --> 01:15:27,410 biz saklamak olduğunu varsayalım Bir hastanededaha hasta kayıtları 1566 01:15:27,410 --> 01:15:30,870 Pierson isimleri, telefon numaraları, böylece sosyal güvenlik numaraları, doktor 1567 01:15:30,870 --> 01:15:31,540 tarih. 1568 01:15:31,540 --> 01:15:34,160 Bu kutu, fazla olabilir , Çok daha büyük bir durumda 1569 01:15:34,160 --> 01:15:38,000 minik bir işaretçi, adresi Bir sonraki büyük bir anlaşma değil element--. 1570 01:15:38,000 --> 01:15:40,620 Böyle bir saçak var farketmez maliyet. 1571 01:15:40,620 --> 01:15:43,210 Ancak bu durumda, evet, bir iki katına var. 1572 01:15:43,210 --> 01:15:45,290 İyi soru. 1573 01:15:45,290 --> 01:15:47,900 >> saat a bahsedelim daha somut olarak küçük. 1574 01:15:47,900 --> 01:15:50,380 çalışma süresi nedir Bu listeyi aranırken? 1575 01:15:50,380 --> 01:15:53,640 Ben aramak istedim varsayalım Tüm öğrencilerin sınıflara geçtikçe, 1576 01:15:53,640 --> 01:15:55,980 n notları var Bu veri yapısı içinde. 1577 01:15:55,980 --> 01:15:58,830 Burada da, biz ödünç alabilir daha önceki kelime. 1578 01:15:58,830 --> 01:16:00,890 Bu doğrusal bir veri yapısıdır. 1579 01:16:00,890 --> 01:16:04,570 >> n Büyük O almak için gerekli ne olduğunu Bu veri yapısının sonuna kadar, 1580 01:16:04,570 --> 01:16:08,410 whereas-- ve biz görmedik Bu bir dizi size verir before-- 1581 01:16:08,410 --> 01:16:13,555 Ne yani, sabit zaman denir bir adım ya da iki adım veya 10 steps-- 1582 01:16:13,555 --> 01:16:14,180 önemli değil. 1583 01:16:14,180 --> 01:16:15,440 Bu sabit bir sayıdır. 1584 01:16:15,440 --> 01:16:17,440 Bu ile ilgisi yoktur Dizinin boyutu. 1585 01:16:17,440 --> 01:16:20,130 Ve Bunun nedeni, Yine, rasgele erişim olduğunu. 1586 01:16:20,130 --> 01:16:23,180 Bilgisayar can sadece hemen başka bir yere atlamak, 1587 01:16:23,180 --> 01:16:27,770 hepsi aynı çünkü her şey mesafe. 1588 01:16:27,770 --> 01:16:29,112 dahil hiçbir düşünce yoktur. 1589 01:16:29,112 --> 01:16:31,900 1590 01:16:31,900 --> 01:16:32,400 Pekala. 1591 01:16:32,400 --> 01:16:39,230 I can Yani, bana deneyelim son iki resim boya. 1592 01:16:39,230 --> 01:16:42,830 karma tablo olarak bilinen çok yaygın bir. 1593 01:16:42,830 --> 01:16:51,120 Yani bu tartışma motive etmek, Bana bunu nasıl düşüneyim. 1594 01:16:51,120 --> 01:16:52,610 >> Peki buna ne dersin? 1595 01:16:52,610 --> 01:16:55,160 Sorun Varsayalım ki Şimdi çözmek istiyoruz 1596 01:16:55,160 --> 01:16:58,360 Bir dictionary-- içinde uyguluyor İngilizce kelimeleri yani bir sürü 1597 01:16:58,360 --> 01:16:59,330 ya da her neyse. 1598 01:16:59,330 --> 01:17:02,724 Ve gol cevap verebilmek için Formun soruları bu bir kelimedir? 1599 01:17:02,724 --> 01:17:04,640 Yani uygulamak istediğiniz Bir yazım denetleyicisi, sadece 1600 01:17:04,640 --> 01:17:07,220 fiziksel bir sözlük gibi Eğer bir şeyler aramak olabilir. 1601 01:17:07,220 --> 01:17:10,490 Ben bir dizi ile bunu vardı varsayalım. 1602 01:17:10,490 --> 01:17:12,590 Ben bu yapabilirdi. 1603 01:17:12,590 --> 01:17:20,756 >> Ve kelimeler elma varsayalım ve muz ve kavun. 1604 01:17:20,756 --> 01:17:23,330 1605 01:17:23,330 --> 01:17:26,465 Ve ben meyve düşünemiyorum O d ile başlar, bu yüzden biz sadece konum 1606 01:17:26,465 --> 01:17:27,590 Üç meyve olacak. 1607 01:17:27,590 --> 01:17:31,510 Yani bu bir dizidir ve biz konum Bu kelimelerin hepsi depolama 1608 01:17:31,510 --> 01:17:34,200 bir dizi olarak, bu sözlükte. 1609 01:17:34,200 --> 01:17:39,350 Soru, başka nasıl olduğunu Bu bilgiyi saklamak olabilir? 1610 01:17:39,350 --> 01:17:43,160 >> Eh, biraz, çünkü burada hile ediyorum kelime bu harflerin her biri 1611 01:17:43,160 --> 01:17:44,490 Gerçekten tek bir bayt olduğunu. 1612 01:17:44,490 --> 01:17:46,740 Bu yüzden gerçekten olmak istedim sirke seçici, ben gerçekten gerekir 1613 01:17:46,740 --> 01:17:49,600 çok içine bu kadar bölünebilen olması belleğin küçük parçalar, 1614 01:17:49,600 --> 01:17:51,289 ve biz tam olarak bunu yapabiliriz. 1615 01:17:51,289 --> 01:17:53,580 Ama biz çalıştırmak için gidiyoruz eskisi gibi sorun. 1616 01:17:53,580 --> 01:17:56,674 Ne, eğer Merriam Webster veya Oxford olarak Her onlar kelimeler eklemek year-- yapar 1617 01:17:56,674 --> 01:17:59,340 dictionary-- biz yok mutlaka kendimizi boyamak istiyorum 1618 01:17:59,340 --> 01:18:00,780 bir dizi ile bir köşeye? 1619 01:18:00,780 --> 01:18:05,710 >> Bunun yerine, belki daha akıllı bir yaklaşım Kendi düğüm ya da kutuya elma koymak için, 1620 01:18:05,710 --> 01:18:11,190 dediğimiz gibi, muz, ve Daha sonra burada kavun var. 1621 01:18:11,190 --> 01:18:14,990 1622 01:18:14,990 --> 01:18:16,790 bunlar birbirine ve biz dize. 1623 01:18:16,790 --> 01:18:19,980 Yani bu dizidir ve Bu bağlantılı listesidir. 1624 01:18:19,980 --> 01:18:23,300 oldukça göremiyorsanız, sadece diyor "dizi" ve bu "diyor liste." 1625 01:18:23,300 --> 01:18:25,780 >> Bu yüzden aynı olması önce tam olarak konular, 1626 01:18:25,780 --> 01:18:28,600 bu sayede şu anda sahip Bizim bağlantılı liste dinamizm. 1627 01:18:28,600 --> 01:18:31,090 Ama biz oldukça yavaş bir sözlük var. 1628 01:18:31,090 --> 01:18:32,870 Ben bir kelime aramak istediğinizi varsayalım. 1629 01:18:32,870 --> 01:18:35,430 Bana n büyük O sürebilir adımlar, kelime olabilir çünkü 1630 01:18:35,430 --> 01:18:37,840 sonunda tüm yol olacak kavun gibi liste. 1631 01:18:37,840 --> 01:18:40,600 Ve o çıkıyor programlama, sıralama 1632 01:18:40,600 --> 01:18:42,700 Verilerin Holy Grail yapıları, bir şey 1633 01:18:42,700 --> 01:18:46,620 Bu sizin sabit verir bir dizi gibi zaman 1634 01:18:46,620 --> 01:18:50,870 ama bu yine de dinamizmi verir. 1635 01:18:50,870 --> 01:18:52,940 >> Bu yüzden her iki dünyanın en iyi olabilir? 1636 01:18:52,940 --> 01:18:55,570 Ve gerçekten, bir şey var hash tablosu olarak adlandırılan 1637 01:18:55,570 --> 01:18:59,320 Bu tam olarak yapmanızı sağlar olsa yaklaşık o. 1638 01:18:59,320 --> 01:19:03,140 Bir karma tablo meraklısı olduğunu Veri yapısı biz 1639 01:19:03,140 --> 01:19:06,340 olarak düşünebiliriz Bir array-- kombinasyonu 1640 01:19:06,340 --> 01:19:12,390 ve ben çizmek gidiyorum bu-- ve bağlantılı listeler gibi 1641 01:19:12,390 --> 01:19:17,310 Buraya böyle çizmek edeceğiz. 1642 01:19:17,310 --> 01:19:19,760 >> Bu şey ve yolu aşağıdaki gibi çalışır. 1643 01:19:19,760 --> 01:19:23,310 1644 01:19:23,310 --> 01:19:29,540 Bu table-- hash şimdi-- eğer benim üçüncü veri yapısı, 1645 01:19:29,540 --> 01:19:32,590 ve ben saklamak istiyorum Bu kelimeler, I do not 1646 01:19:32,590 --> 01:19:35,440 Sadece tüm saklamak istediğiniz kelimeler arka arkaya arkaya arkaya. 1647 01:19:35,440 --> 01:19:37,430 Biraz yararlanmak isteyen bilgi parçası 1648 01:19:37,430 --> 01:19:40,330 sağlayacak kelimeleri Daha hızlı nerede benim olsun. 1649 01:19:40,330 --> 01:19:43,666 >> Yani kelimeler elma vermiş ve muz ve kavun, 1650 01:19:43,666 --> 01:19:45,040 Ben kasten bu kelimeleri seçtik. 1651 01:19:45,040 --> 01:19:45,340 Niye ya? 1652 01:19:45,340 --> 01:19:47,631 Ne temelde çeşit Üç farkı nedir? 1653 01:19:47,631 --> 01:19:49,950 1654 01:19:49,950 --> 01:19:51,484 açık nedir? 1655 01:19:51,484 --> 01:19:52,900 Farklı harflerle başlar. 1656 01:19:52,900 --> 01:19:53,900 >> Yani biliyor musun? 1657 01:19:53,900 --> 01:19:57,120 tüm sözlerimi koymak yerine Aynı kova, tabiri caizse, 1658 01:19:57,120 --> 01:20:00,390 gibi büyük bir listede, neden yok Ben en azından bir optimizasyon deneyin 1659 01:20:00,390 --> 01:20:04,180 ve benim listeleri 1/26 sürece olun. 1660 01:20:04,180 --> 01:20:07,440 Bir zorlayıcı optimizasyon yok neden olabilir 1661 01:20:07,440 --> 01:20:10,650 Ben- sözcük ekleme Bu veri yapısı içinde, 1662 01:20:10,650 --> 01:20:14,300 bilgisayarın belleğinden, neden içine Ben burada tüm 'bir' sözlerini koymayın 1663 01:20:14,300 --> 01:20:17,270 hepsi burada 'b' sözleri, ve burada tüm 'c' sözleri? 1664 01:20:17,270 --> 01:20:24,610 Yani bu bir elma koyarak biter Burada, burada ve burada muz, kavun, 1665 01:20:24,610 --> 01:20:25,730 ve benzeri. 1666 01:20:25,730 --> 01:20:31,700 >> Ve ben bir ek varsa kelime başka ne da--? 1667 01:20:31,700 --> 01:20:36,640 Elma, muz, armut. 1668 01:20:36,640 --> 01:20:39,370 Herkes meyve düşünmek a, b ya da c ile başlar? 1669 01:20:39,370 --> 01:20:40,570 Blueberry-- mükemmel. 1670 01:20:40,570 --> 01:20:43,990 Burada sonuna kadar gidiyor. 1671 01:20:43,990 --> 01:20:47,530 Ve bu yüzden bir var gibi marjinal iyi çözüm, 1672 01:20:47,530 --> 01:20:50,820 Şimdi isterseniz, çünkü elma aramak için, ben 1673 01:20:50,820 --> 01:20:53,200 birinci-- Ben sadece dalış yok benim veri yapısı içine. 1674 01:20:53,200 --> 01:20:54,850 Ben bilgisayarın hafızasına dalmayın. 1675 01:20:54,850 --> 01:20:56,530 Ben ilk ilk harfi bakmak. 1676 01:20:56,530 --> 01:20:58,610 >> Ve bu ne bir bilgisayar bilim adamı söyleyebilirim. 1677 01:20:58,610 --> 01:21:00,760 Sen veri yapısı içine hash. 1678 01:21:00,760 --> 01:21:04,100 Sen girişi almak Bu durumda elma gibi bir kelimedir. 1679 01:21:04,100 --> 01:21:07,150 Sen bakarak, analiz Bu durumda ilk harfi, 1680 01:21:07,150 --> 01:21:08,340 böylece bu karma. 1681 01:21:08,340 --> 01:21:10,950 Hashing genel bir terim mademki olduğunu Eğer girdi olarak bir şey almak 1682 01:21:10,950 --> 01:21:12,116 ve bazı çıktı üretmek. 1683 01:21:12,116 --> 01:21:15,090 Ve bu çıkış durum konumu 1684 01:21:15,090 --> 01:21:18,150 Eğer, birinci aramak istediğiniz Konumu, ikinci konumu, üçüncü. 1685 01:21:18,150 --> 01:21:22,160 Yani giriş elma, çıkış ilk. 1686 01:21:22,160 --> 01:21:25,054 Giriş muz, olduğu Çıkışın, ikinci olmalıdır. 1687 01:21:25,054 --> 01:21:27,220 giriş, kavun olduğunu çıkış, üçüncü olmalıdır. 1688 01:21:27,220 --> 01:21:30,320 giriş, yaban mersini olduğunu çıkış tekrar ikinci olmalıdır. 1689 01:21:30,320 --> 01:21:34,010 Ve bu almaya yardımcı olur ne hafızanıza aracılığıyla kısayolları 1690 01:21:34,010 --> 01:21:39,050 kelimeleri almak için veya veri daha etkili. 1691 01:21:39,050 --> 01:21:43,330 >> Şimdi bu potansiyel bizim zaman keser kadar 26 kişiden biri olarak tarafından, 1692 01:21:43,330 --> 01:21:45,850 Eğer farz çünkü eğer sen misin "Z" gibi birçok "bir" kelime var 1693 01:21:45,850 --> 01:21:48,080 "Q" kelimeleri gibi kelimeler hangi Gerçekten realistic-- değildir 1694 01:21:48,080 --> 01:21:50,830 Eğer genelinde çarpık zorunda gidiyoruz alphabet-- belirli harfleri 1695 01:21:50,830 --> 01:21:53,204 ama bu bir artımlı olurdu izin vermez yaklaşım 1696 01:21:53,204 --> 01:21:55,930 Eğer çok daha hızlı kelime almak için. 1697 01:21:55,930 --> 01:21:59,660 Ve gerçekte, sofistike Program, dünyanın Google'ın, 1698 01:21:59,660 --> 01:22:02,180 --daha dünya Facebooks onlar bir karma tablo kullanmak 1699 01:22:02,180 --> 01:22:03,740 farklı amaçlar bir sürü. 1700 01:22:03,740 --> 01:22:06,590 Ama kadar saf olmaz Sadece ilk harfi bakmak 1701 01:22:06,590 --> 01:22:09,700 elma ya da muz veya armut veya kavun, 1702 01:22:09,700 --> 01:22:13,420 Bu gördüğünüz gibi çünkü listeleri hala uzun alabilir. 1703 01:22:13,420 --> 01:22:17,130 >> Ve böylece bu hala tür olabilir bir linear-- böylece tür yavaş, 1704 01:22:17,130 --> 01:22:19,980 n büyük O olduğu gibi biz daha önce tartıştık. 1705 01:22:19,980 --> 01:22:25,290 Peki gerçekten iyi bir karma tablo olacak çok daha büyük bir dizi olacak sanıyor-. 1706 01:22:25,290 --> 01:22:28,574 Ve çok daha kullanacak sofistike karma işlevi, 1707 01:22:28,574 --> 01:22:30,240 böylece sadece bakmak değil "a." 1708 01:22:30,240 --> 01:22:35,480 Belki de bakar "a-p-p-L-e" ve her nasılsa bu beş harf dönüştürür 1709 01:22:35,480 --> 01:22:38,400 nerede konuma Elma saklanmalıdır. 1710 01:22:38,400 --> 01:22:42,660 Biz sadece safça harfi 'a' kullanıyorsanız yalnız, güzel ve basit çünkü. 1711 01:22:42,660 --> 01:22:44,600 >> Ama karma tablo içinde sonunda, aklınıza gelebilecek 1712 01:22:44,600 --> 01:22:47,270 yer alan bir kombinasyonu olarak Bir dizi, her biri 1713 01:22:47,270 --> 01:22:51,700 Bu ideal bir bağlantılı liste var mümkün olduğu kadar kısa olması gerekir. 1714 01:22:51,700 --> 01:22:54,364 Ve bu bariz bir çözüm değildir. 1715 01:22:54,364 --> 01:22:57,280 ince ayar aslında, çok Bu başlık ne zaman altında devam ediyor 1716 01:22:57,280 --> 01:22:59,654 bu tür uygulama sofistike veri yapıları 1717 01:22:59,654 --> 01:23:01,640 Doğru budur Dizinin uzunluğu? 1718 01:23:01,640 --> 01:23:03,250 Sağ hash fonksiyonu nedir? 1719 01:23:03,250 --> 01:23:04,830 Nasıl bellekte şeyleri saklamak mı? 1720 01:23:04,830 --> 01:23:07,249 >> Ama nasıl hızlı bir şekilde gerçekleştirmek tartışma bu tür 1721 01:23:07,249 --> 01:23:10,540 bu tür olduğunu, ya şimdiye kadar tırmandı Bu noktada kişinin başının üzerinde hangi 1722 01:23:10,540 --> 01:23:11,360 iyi. 1723 01:23:11,360 --> 01:23:18,820 Ama biz gerçekten birlikte, hatırlama başladı bir şey düşük seviyeli ve elektronik. 1724 01:23:18,820 --> 01:23:20,819 Ve böylece bu yine bu soyutlama tema, 1725 01:23:20,819 --> 01:23:23,610 nereye için almaya başlar kez verilen, tamam, ben orada dökersin-- var 1726 01:23:23,610 --> 01:23:26,680 fiziksel bellek, tamam, her, got it fiziksel konumu, bir adresi vardır 1727 01:23:26,680 --> 01:23:29,910 Tamam, anladım ben temsil edebilir arrows-- sıra bu adresler 1728 01:23:29,910 --> 01:23:34,650 Eğer çok hızlı olması başlayabilirsiniz Daha sofistike konuşmalar olduğunu 1729 01:23:34,650 --> 01:23:38,360 Sonunda bize izin gibi görünüyor arama gibi sorunları çözmek için 1730 01:23:38,360 --> 01:23:41,620 ve daha etkin sıralama. 1731 01:23:41,620 --> 01:23:44,190 Ve, too-- emin Ben bu düşünüyorum çünkü 1732 01:23:44,190 --> 01:23:48,700 bazı içine gittin en derin biz ettik proper-- bu CS konuların 1733 01:23:48,700 --> 01:23:51,880 Bu bir gün bir buçuk yapılır genellikle üzerinde ne yapacağını işaret 1734 01:23:51,880 --> 01:23:55,520 Bir dönem sekiz hafta elbette. 1735 01:23:55,520 --> 01:23:59,670 >> Bu herhangi bir sorunuz var mı? 1736 01:23:59,670 --> 01:24:01,100 Yok hayır? 1737 01:24:01,100 --> 01:24:01,940 Pekala. 1738 01:24:01,940 --> 01:24:05,610 Peki, neden orada duraklama yok Bir kaç dakika erken öğle başlatmak, 1739 01:24:05,610 --> 01:24:07,052 sadece yaklaşık bir saat devam? 1740 01:24:07,052 --> 01:24:08,760 Ve ben oyalanmak edeceğiz sorularla biraz. 1741 01:24:08,760 --> 01:24:11,343 Sonra gitmek zorunda gidiyorum Sorun olmazsa bir kaç aramaları almak. 1742 01:24:11,343 --> 01:24:15,000 Ben, bu arada bazı müzik açmak gerekir ama öğle köşeyi olmalıdır. 1743 01:24:15,000 --> 01:24:17,862