1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Малан: Добре. 3 00:00:11,940 --> 00:00:16,470 Так що це CS50, і це Тепер початок три тижні. 4 00:00:16,470 --> 00:00:19,960 >> Так до сих пір, ми не маю писав програми в C 5 00:00:19,960 --> 00:00:23,210 що виглядає трохи як то так вот. 6 00:00:23,210 --> 00:00:25,470 Отже, ми отримали пару Різке включає в верхній частині. 7 00:00:25,470 --> 00:00:28,490 У нас є Int, головна, недійсними, і потім те, щоб зробити в середині, 8 00:00:28,490 --> 00:00:30,590 деякі шматок коду всередині з цієї функції. 9 00:00:30,590 --> 00:00:34,170 Але ключ був той факт, що ми говорили недійсними тут. 10 00:00:34,170 --> 00:00:39,320 Так недійсними, весь цей час, вказує що ця програма, при запуску, 11 00:00:39,320 --> 00:00:41,300 може бути запущений тільки через його імені. 12 00:00:41,300 --> 00:00:46,330 Ви не можете ввести будь-які інші слова або Цифри після назви програми при 13 00:00:46,330 --> 00:00:46,830 запустити його. 14 00:00:46,830 --> 00:00:51,200 Так, наприклад, якщо програма була зібрані у файлі під назвою Привіт, 15 00:00:51,200 --> 00:00:53,480 ви могли б зробити ./hello, але що це таке. 16 00:00:53,480 --> 00:00:56,750 >> Єдиний спосіб, яким ви могли б внести свій вклад в цю програму 17 00:00:56,750 --> 00:00:57,960 є шляхом виклику функції. 18 00:00:57,960 --> 00:00:59,790 Наприклад, що функція були ми, використовуючи до сих пір 19 00:00:59,790 --> 00:01:00,950 для отримання даних від користувача? 20 00:01:00,950 --> 00:01:02,117 >> АУДИТОРІЯ: Отримати рядок. 21 00:01:02,117 --> 00:01:04,700 DAVID Малан: Щоб отримати рядок, або отримати Int, або ви бачили інших, 22 00:01:04,700 --> 00:01:07,630 навіть якщо ви не використовували їх ще, як отримати багато, багато тощо. 23 00:01:07,630 --> 00:01:09,380 Але припустимо, що ми насправді хочете, щоб почати 24 00:01:09,380 --> 00:01:12,760 написання програм, які трохи більше універсальний, і, чесно кажучи, трохи більше 25 00:01:12,760 --> 00:01:15,090 як команди, що ви отримував, як ми сподіваємося, 26 00:01:15,090 --> 00:01:16,550 трохи звикли. 27 00:01:16,550 --> 00:01:18,560 Як кд простору Dropbox. 28 00:01:18,560 --> 00:01:20,800 Це, звичайно, зміни ваш каталог, припускаючи 29 00:01:20,800 --> 00:01:23,590 ви знаходитесь в будинку Джона Гарварда каталог, в папку Dropbox. 30 00:01:23,590 --> 00:01:27,380 Між тим, команда, як це створює нову папку з ім'ям pset2, 31 00:01:27,380 --> 00:01:30,290 як ви, напевно, вже або скоро для завдання встановити два. 32 00:01:30,290 --> 00:01:33,970 Зробити Привіт, звичайно, є командою , Яка будує програму під назвою привіт 33 00:01:33,970 --> 00:01:35,770 з файлу під назвою Привіт точка с. 34 00:01:35,770 --> 00:01:39,140 І в кожному з них випадки, зараз, у нас було 35 00:01:39,140 --> 00:01:43,620 забезпечують аргумент на так званий командного рядка, блимає швидко, 36 00:01:43,620 --> 00:01:48,540 так що марка знає що будувати, і так що MkDir знає, що папка, щоб створити, 37 00:01:48,540 --> 00:01:51,110 і так, що CD знає де ви хочете піти. 38 00:01:51,110 --> 00:01:54,720 Але до цих пір, ми постійно говорять що головна ваша функція за замовчуванням, 39 00:01:54,720 --> 00:01:58,500 є вираз пустот всередині цих дужок, 40 00:01:58,500 --> 00:02:01,250 Це означає, що його не може прийняти ніяких аргументів. 41 00:02:01,250 --> 00:02:03,240 >> Так, починаючи з сьогоднішнього, те, що ми збираємося зробити 42 00:02:03,240 --> 00:02:06,270 Тобто, ми збираємося почати підтримки такі речі навіть. 43 00:02:06,270 --> 00:02:08,990 Насправді, в цьому випадку, який вам як правило, не вручну ввести, 44 00:02:08,990 --> 00:02:11,130 Зробити робив це для нас, тобто не 45 00:02:11,130 --> 00:02:15,840 один, а один, два, три додаткових рядка після програми по імені 46 00:02:15,840 --> 00:02:16,850 брязкіт. 47 00:02:16,850 --> 00:02:18,240 Так як же нам цього домогтися? 48 00:02:18,240 --> 00:02:20,260 >> Ну, починаючи з сьогоднішнього дня, в тих випадках, коли ми хочемо 49 00:02:20,260 --> 00:02:22,855 забезпечити введення через Так званий командного рядка, 50 00:02:22,855 --> 00:02:24,980 ми збираємося почати додавати тут те, що в yellow-- 51 00:02:24,980 --> 00:02:30,520 заміна порожнечу агдс коми Рядок агду відкриває дужка закриває дужка. 52 00:02:30,520 --> 00:02:32,520 Тепер це цікаво протягом кількох причин. 53 00:02:32,520 --> 00:02:35,690 Один, це буде запишемо програми, які трохи більш динамічним. 54 00:02:35,690 --> 00:02:37,570 Але, більш переконливо, він збирається відкрити 55 00:02:37,570 --> 00:02:40,340 Тепер розмова, щоб що масиви можуть дійсно 56 00:02:40,340 --> 00:02:43,300 використовуватися, для того, що рядки дійсно знаходиться під капотом, 57 00:02:43,300 --> 00:02:47,320 до наступного тижня, коли ми не почнемо з аквалангом У ще глибше щодо того, як машина 58 00:02:47,320 --> 00:02:48,590 робить всі ці речі роботи. 59 00:02:48,590 --> 00:02:51,920 Але зараз, давайте малювати, можливо, картина. 60 00:02:51,920 --> 00:02:54,950 >> Коли ви пишете програму з основним заявив 61 00:02:54,950 --> 00:02:58,810 В цьому випадку, таким чином, що основна приймає два аргументи, Int 62 00:02:58,810 --> 00:03:03,233 і-- який тип даних це другий аргумент? 63 00:03:03,233 --> 00:03:04,529 >> АУДИТОРІЯ: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Малан: Array. 65 00:03:05,320 --> 00:03:09,170 Так це виглядає на перший погляд, начебто це рядок, але зверніть увагу на квадратні дужки. 66 00:03:09,170 --> 00:03:12,760 Нагадаємо, в останній раз ми ввели Поняття масиву. 67 00:03:12,760 --> 00:03:16,210 І масиви використовують квадратні дужки через пару контекстах. 68 00:03:16,210 --> 00:03:19,160 Ви можете використовувати площу кронштейни йти в масив 69 00:03:19,160 --> 00:03:22,710 і отримати конкретний елемент, як Кронштейн 0 або кронштейн 1 або кронштейн 2. 70 00:03:22,710 --> 00:03:25,500 Але ми бачили, якщо коротко, минулого тижня, що ви також 71 00:03:25,500 --> 00:03:28,790 використовувати ці квадратні дужки в оголосити розмір масиву, 72 00:03:28,790 --> 00:03:31,790 якщо ви знаєте заздалегідь, скільки Інтс або скільки рядків або все, що ви 73 00:03:31,790 --> 00:03:32,630 насправді хочете. 74 00:03:32,630 --> 00:03:34,790 Ось і виходить, що є третій контекст тут 75 00:03:34,790 --> 00:03:37,890 що не має номера всередині з квадратних дужках. 76 00:03:37,890 --> 00:03:41,920 При вказівці, як у мене тут, назва-то вроде ARGV, 77 00:03:41,920 --> 00:03:44,550 , Який є просто химерний спосіб кажучи аргумент вектор, 78 00:03:44,550 --> 00:03:47,750 ще один химерний спосіб кажучи масив аргументів, 79 00:03:47,750 --> 00:03:50,870 відкриває дужка закриває дужка просто означає, що вам не обов'язково 80 00:03:50,870 --> 00:03:52,960 заздалегідь знати, як великий Масив буде, 81 00:03:52,960 --> 00:03:55,070 але ви знаєте, що це збирається бути масивом. 82 00:03:55,070 --> 00:03:57,320 Так що, якщо ви не знаєте, число, не ставте його там, 83 00:03:57,320 --> 00:04:01,160 для відкритої кронштейна закриває дужки означає, що агду не є рядком, 84 00:04:01,160 --> 00:04:03,124 але масив рядків. 85 00:04:03,124 --> 00:04:05,040 Так синтаксично, якщо вам думаю минулого тижня, 86 00:04:05,040 --> 00:04:09,460 це дуже схоже, що сказати щось на зразок десяткового віків дужки що, 87 00:04:09,460 --> 00:04:10,984 а потім то після цього. 88 00:04:10,984 --> 00:04:12,150 Отже, що ж це схоже? 89 00:04:12,150 --> 00:04:13,399 Давайте реально намалювати картину. 90 00:04:13,399 --> 00:04:18,756 Тому, коли ви запустите цю програму з основними Наявність двох аргументів визначається всередині 91 00:04:18,756 --> 00:04:21,339 з тих дужках, ви істотно, принаймні два шматки 92 00:04:21,339 --> 00:04:23,560 пам'яті передав вам під капотом. 93 00:04:23,560 --> 00:04:26,550 Один, як я буду малює як цього прямокутника, збирається назвати агдс. 94 00:04:26,550 --> 00:04:30,645 І так само, як швидкою повторення, що тип даних агдс? 95 00:04:30,645 --> 00:04:31,270 Так що це внутр. 96 00:04:31,270 --> 00:04:33,480 Так ряд збирається піти в argc-- поворотів 97 00:04:33,480 --> 00:04:35,660 , Що означає кількістю аргументів. 98 00:04:35,660 --> 00:04:38,887 Між тим, я намалював ARGV як масив. 99 00:04:38,887 --> 00:04:40,970 І я дійсно не знаю, як довго це буде, 100 00:04:40,970 --> 00:04:42,470 так для сьогоднішніх цілей точка точка точка. 101 00:04:42,470 --> 00:04:43,636 Це могло б стати деякої довжини. 102 00:04:43,636 --> 00:04:45,640 Але я на фото тут щонайменше, чотири прямокутників. 103 00:04:45,640 --> 00:04:50,970 Так агду шматок пам'яті, яка зберігає рядок рядок рядок точка точка точка, 104 00:04:50,970 --> 00:04:53,950 і агдс є лише одним шматок пам'яті для цілого числа. 105 00:04:53,950 --> 00:04:55,710 >> Так що тепер, давайте бути трохи точнішим. 106 00:04:55,710 --> 00:04:59,200 Якщо, коли у мене є рядки в цьому масиві, називається 107 00:04:59,200 --> 00:05:03,290 агду, я хочу отримати на них індивідуально, так само, як минулого тижня, 108 00:05:03,290 --> 00:05:05,670 ми збираємося використовувати позначення як агду кронштейна 0 109 00:05:05,670 --> 00:05:07,650 щоб отримати перше, що масив. 110 00:05:07,650 --> 00:05:10,440 Агду кронштейн 1, щоб отримати Друга річ, і так далі. 111 00:05:10,440 --> 00:05:14,597 Ключовим моментом тут є, що ми як і раніше 0 indexed-- ми все ще вважаючи від 0. 112 00:05:14,597 --> 00:05:16,430 Так що тепер давайте насправді покласти щось в цьому. 113 00:05:16,430 --> 00:05:21,670 Якби мені довелося скласти програму під назвою Привіт з файлу під назвою Привіт точка с, 114 00:05:21,670 --> 00:05:24,340 а потім я запускаю цю програму з точки слеш привіт, 115 00:05:24,340 --> 00:05:28,380 що робить мій комп'ютер, мій ноутбук, виглядати під капотом 116 00:05:28,380 --> 00:05:31,300 момент я біжу точка слеш привіт і натисніть Введення? 117 00:05:31,300 --> 00:05:33,500 Ну, це, мабуть, те, що ми могли б описати 118 00:05:33,500 --> 00:05:37,010 як зміст вашого комп'ютера пам'яті, або пам'яті RAM-- Random Access. 119 00:05:37,010 --> 00:05:40,330 Іншими словами, комп'ютер, так чи інакше для вас чарівним, 120 00:05:40,330 --> 00:05:45,360 ставить цифру 1 в агдс, AKA ARGCOUNT, і це ставить буквально рядок 121 00:05:45,360 --> 00:05:48,200 ./hello в ARGV кронштейна 0. 122 00:05:48,200 --> 00:05:51,750 Я поняття не маю ,, чесно кажучи, те, що немає в ARGV кронштейном 1 або 2 або 3, 123 00:05:51,750 --> 00:05:55,550 бо, якщо користувач не має набрали нічого, крім ./hello, 124 00:05:55,550 --> 00:05:58,550 ми будемо вважати, що ці є найбільш вірогідними значеннями сміття, 125 00:05:58,550 --> 00:05:59,700 так сказати. 126 00:05:59,700 --> 00:06:02,650 Ці шматки пам'яті існує, але це не до нас 127 00:06:02,650 --> 00:06:05,710 дивитися на них, тому що ARGCOUNT тільки один. 128 00:06:05,710 --> 00:06:07,870 >> Тепер, між тим, якщо I написати запустити іншу програму, 129 00:06:07,870 --> 00:06:12,250 кд, що більш правильно команда, у вашому миготливим prompt-- простору кд 130 00:06:12,250 --> 00:06:17,200 Dropbox-- коли я запускаю, що, по суті, коли програма кд запускається, агдс, 131 00:06:17,200 --> 00:06:22,270 всередині пам'яті мого комп'ютера, для найбільш частку секунди число 2. 132 00:06:22,270 --> 00:06:25,936 А потім агду кронштейн про має кд, агду кронштейн 1 має Dropbox, 133 00:06:25,936 --> 00:06:28,560 і тоді, звичайно, команда завершує, так вся ця пам'ять 134 00:06:28,560 --> 00:06:30,420 істотно йде і використовується для іншого. 135 00:06:30,420 --> 00:06:32,270 І ось чому я говорю тільки на частку секунди. 136 00:06:32,270 --> 00:06:35,720 >> Між тим, якщо ми робимо MKDIR pset2, картина виглядає майже так само, 137 00:06:35,720 --> 00:06:37,900 але з різними рядками усередині ARGV. 138 00:06:37,900 --> 00:06:42,570 Якщо я роблю брязкіт тире привіт Привіт точка с, та ж ідея. 139 00:06:42,570 --> 00:06:47,060 Більше матеріалу заповнюється для агду, і агдс, звичайно, 4. 140 00:06:47,060 --> 00:06:49,150 Таким чином, іншими словами, хоча цього масиву 141 00:06:49,150 --> 00:06:52,950 може бути точка точка точка, з деяких змінної довжини, так сказати, 142 00:06:52,950 --> 00:06:56,720 Ви завжди знаєте, де його кінець є, тому агдс збирається сказати вам 143 00:06:56,720 --> 00:07:00,120 в який момент ви повинні зупинити дивлячись на елементів в ARGV. 144 00:07:00,120 --> 00:07:03,660 Ви можете дивитися тільки на чотирьох в цілому в цьому випадку. 145 00:07:03,660 --> 00:07:06,600 >> Отже, давайте поглянемо на, можливо, проста програма. 146 00:07:06,600 --> 00:07:09,070 Той, який просто говорить привіт кому то подобається Zamyla. 147 00:07:09,070 --> 00:07:12,620 Так я стверджую, що я збираюся написати програму через хвилину, через який я міг зробити 148 00:07:12,620 --> 00:07:16,670 ./hello простір Zamyla, а потім я хочу моя програма роздрукувати то 149 00:07:16,670 --> 00:07:18,520 супер-просто, як "Привіт, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Тепер в минулому ми використовували GetString. 151 00:07:20,100 --> 00:07:22,850 Так в минулому, навіть якщо Ви новачок в програмуванні, 152 00:07:22,850 --> 00:07:27,180 напевно ви могли на швидку руку програма, яка використовує GetString 153 00:07:27,180 --> 00:07:29,390 а потім використовує Printf щоб сказати привіт Zamyla. 154 00:07:29,390 --> 00:07:31,290 Але давайте не будемо використовувати GetString цього разу. 155 00:07:31,290 --> 00:07:37,510 Дозвольте мені замість цього піти в Appliant і не включають в себе стандартні Я O точка годину. 156 00:07:37,510 --> 00:07:41,160 Дозвольте мені також включають CS50 точка годину. 157 00:07:41,160 --> 00:07:44,730 Тепер тап_п, і тепер я не збирається робити недійсними сьогодні. 158 00:07:44,730 --> 00:07:51,200 Замість цього, я збираюся зробити агдс Рядок агду відкриває дужка закриває дужка, 159 00:07:51,200 --> 00:07:52,640 не вказали номер. 160 00:07:52,640 --> 00:07:54,644 А тепер ось моя так звана зробити. 161 00:07:54,644 --> 00:07:57,560 Те, що я збираюся зробити зараз, це, я збирається зробити трохи стрибку віри, 162 00:07:57,560 --> 00:08:00,560 Я буду вважати, що користувача збирається правильно використовувати цю програму, 163 00:08:00,560 --> 00:08:04,980 і я просто збираюся зробити Е привіт,% Sn. 164 00:08:04,980 --> 00:08:06,630 Так що нічого нового там. 165 00:08:06,630 --> 00:08:11,470 Але я хочу, щоб тепер покласти все, що слово користувач після імені програми. 166 00:08:11,470 --> 00:08:16,970 Так що, якщо я роблю ./hello простір Zamyla, я хочете щось програмно доступ 167 00:08:16,970 --> 00:08:20,870 цитувати кінець цитати "Zamyla." тому я може піти в мою аргументу вектора, 168 00:08:20,870 --> 00:08:25,980 мій масив рядків, і якщо команди, знову, був ./hello простір Zamyla, 169 00:08:25,980 --> 00:08:29,340 який номер я хочу покласти в ARGV тут? 170 00:08:29,340 --> 00:08:29,840 АУДИТОРІЯ: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID мала: 1, тому що Кронштейн 0 виявляється 172 00:08:32,355 --> 00:08:34,230 буде Назва програми, як ми бачили. 173 00:08:34,230 --> 00:08:37,789 Так кронштейн 1 це перше слово що я, користувач, набрали. 174 00:08:37,789 --> 00:08:39,559 Я збираюся йти вперед і зберегти це. 175 00:08:39,559 --> 00:08:42,830 Я збираюся піти в мою папку де я розмістив цей файл. 176 00:08:42,830 --> 00:08:44,920 Я збираюся зробити зробити привіт 3. 177 00:08:44,920 --> 00:08:46,230 ОК Comp НЛ. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Що я зробив не так? 180 00:08:54,480 --> 00:08:57,270 Я був захоплений зненацька я на мить там. 181 00:08:57,270 --> 00:08:58,230 Що я зробив не так? 182 00:08:58,230 --> 00:08:59,220 >> АУДИТОРІЯ: Ім'я. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Малан: файлу насправді називається hello3.c. 184 00:09:01,767 --> 00:09:03,850 І я зробив це тільки для консистенція, тому що ми 185 00:09:03,850 --> 00:09:06,550 була hello.c знаходиться в мимо в онлайн коду. 186 00:09:06,550 --> 00:09:11,550 Так давайте виправимо цю ./hello Кронштейн тире 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 І тепер у нас є привіт, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Між тим, я можу змінити це бути Роб, або дійсно будь-яке інше слово. 190 00:09:17,650 --> 00:09:19,230 >> Але давайте розглянемо кутовий випадок. 191 00:09:19,230 --> 00:09:24,360 Те, що ви могли б очікувати станеться, якщо Я не ввести ім'я чию взагалі? 192 00:09:24,360 --> 00:09:25,270 >> АУДИТОРІЯ: Помилка. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Малан: помилка якийсь, можливо. 194 00:09:27,300 --> 00:09:28,200 Подивимося. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Так Е фактично бути трохи захищає нас 198 00:09:33,870 --> 00:09:38,131 тут, і буквально друку відкриті Хлопець нуль, але навіть гірші речі можуть трапитися. 199 00:09:38,131 --> 00:09:40,130 І тільки продемонструвати то, що ви абсолютно 200 00:09:40,130 --> 00:09:42,800 не слід робити, підемо в тут і почати колупатися. 201 00:09:42,800 --> 00:09:43,300 Вірно? 202 00:09:43,300 --> 00:09:46,410 Якщо я знаю, що картина в пам'яті, по суті, це, 203 00:09:46,410 --> 00:09:52,660 агду кронштейн 1 має Zamyla, ARGV Кронштейн 0 має ./hello або ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Що в кронштейні 2? 205 00:09:55,400 --> 00:09:58,210 Так що я можу відповісти, що задаю собі питання, чи не так? 206 00:09:58,210 --> 00:10:00,460 Я можу просто змінити 1 до 2. 207 00:10:00,460 --> 00:10:07,270 Тепер я можу перекомпілювати привіт 3, ./hello3 Давайте збільшувати та натисніть Enter. 208 00:10:07,270 --> 00:10:08,270 Упс. 209 00:10:08,270 --> 00:10:10,660 Ні лапки. 210 00:10:10,660 --> 00:10:12,540 Цікаво. 211 00:10:12,540 --> 00:10:15,530 Так що начебто здорово подивитися, що ще тут. 212 00:10:15,530 --> 00:10:17,130 >> Так що ще знаходиться всередині мого ноутбука? 213 00:10:17,130 --> 00:10:20,390 Давайте збережемо його з кронштейна 3. 214 00:10:20,390 --> 00:10:25,190 Зробити hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Цікавий. 216 00:10:26,500 --> 00:10:30,560 А тепер давайте дійсно bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Так що насправді пірнаючи глибоко в пам'ять мого комп'ютера. 218 00:10:34,340 --> 00:10:35,930 50 Індекси в. 219 00:10:35,930 --> 00:10:41,950 Так що привіт 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Цікавий. 221 00:10:42,680 --> 00:10:44,660 Гаразд, зараз я просто збирається отримати безрозсудним. 222 00:10:44,660 --> 00:10:47,331 Підемо в 5000. 223 00:10:47,331 --> 00:10:47,830 Добре. 224 00:10:47,830 --> 00:10:49,520 Отже, дозвольте мені перекомпілювати. 225 00:10:49,520 --> 00:10:51,460 Зробити hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 Добре. 228 00:10:56,460 --> 00:10:59,250 Зараз деякі з вас, може бути лампочка йдуть. 229 00:10:59,250 --> 00:11:01,900 Як багато з вас є бачили це повідомлення раніше? 230 00:11:01,900 --> 00:11:03,440 Добре. 231 00:11:03,440 --> 00:11:04,420 Отже, чому? 232 00:11:04,420 --> 00:11:07,250 >> Коефіцієнти are-- і є різні речі, які можуть призвести до цього, 233 00:11:07,250 --> 00:11:09,730 і ясно, що ти в хорошій company-- у нас є чітко 234 00:11:09,730 --> 00:11:11,900 викликало те, що називається Сегментація вина. 235 00:11:11,900 --> 00:11:15,890 І коротше кажучи на сьогоднішній день, я торкнулися сегмента пам'яті 236 00:11:15,890 --> 00:11:17,060 що я не повинен мати. 237 00:11:17,060 --> 00:11:19,970 Де сегмент просто означає шматок пам'яті, що я не повинен мати. 238 00:11:19,970 --> 00:11:25,530 Тепер комп'ютер гарантує, що, якщо я запустити ./helloZamyla що я можу торкнутися ARGV 239 00:11:25,530 --> 00:11:27,760 бути кронштейн 0 і агду кронштейн 1. 240 00:11:27,760 --> 00:11:32,730 Але агдс є значення 2, що означає, що я тільки allowed-- це свого роду честь 241 00:11:32,730 --> 00:11:35,180 сістема-- доторкнутися Кронштейн 0 і кронштейн 1. 242 00:11:35,180 --> 00:11:37,990 Якщо я йду далі, є абсолютно буде пам'ять є. 243 00:11:37,990 --> 00:11:40,660 Мій RAM існує фізично в комп'ютері. 244 00:11:40,660 --> 00:11:42,080 Але хто знає, що там? 245 00:11:42,080 --> 00:11:44,450 Справді, я біжу кратне програми в один час. 246 00:11:44,450 --> 00:11:46,910 Я міг би seen-- якби я не був робити це на Appliant 247 00:11:46,910 --> 00:11:49,937 але на моєму Mac або PC-- я міг би бачив вміст електронній пошті. 248 00:11:49,937 --> 00:11:52,270 Я, можливо, бачили мить повідомлення Я недавно послав. 249 00:11:52,270 --> 00:11:55,390 Все, що може бути що зберігаються навколо в пам'яті 250 00:11:55,390 --> 00:11:59,180 можна було б отримати за способом це довільна квадратна нотація кронштейн. 251 00:11:59,180 --> 00:12:02,850 Або, що ще гірше, ви, можливо, знайшов одного з моїх паролів 252 00:12:02,850 --> 00:12:05,859 що я останнім часом набрали в, що Програма була зберігатися в пам'яті, так як 253 00:12:05,859 --> 00:12:07,900 для аутентифікації мене, і то тільки почасти залишив його 254 00:12:07,900 --> 00:12:09,910 в пам'яті, поки я не пішов цю програму. 255 00:12:09,910 --> 00:12:12,860 >> І справді, це один з небезпеку і одна повноваження 256 00:12:12,860 --> 00:12:15,980 використання мови як С. У вас є вільний доступ 257 00:12:15,980 --> 00:12:18,860 на весь зміст пам'яті програми, 258 00:12:18,860 --> 00:12:21,340 і які погані хлопці можуть навіть зробити в тих cases-- 259 00:12:21,340 --> 00:12:23,807 Особливо, коли ми отримати на веб-програмування 260 00:12:23,807 --> 00:12:26,890 до кінця семестру, ми будемо повернутися до цього topic-- буде копатися, 261 00:12:26,890 --> 00:12:31,660 потенційно, хто це комп'ютера пам'яті і знайти такі цікаві речі 262 00:12:31,660 --> 00:12:32,570 як ми бачили там. 263 00:12:32,570 --> 00:12:36,900 Або навіть ще гірше, паролі, що він або вона може використовувати, щоб робити погані речі. 264 00:12:36,900 --> 00:12:40,240 >> Отже, ясно, я не повинен був робити цього, тому дивні речі починають відбуватися. 265 00:12:40,240 --> 00:12:42,310 Справді, це програма гуркіт. 266 00:12:42,310 --> 00:12:44,580 Це було б рівносильно з Mac OS або в ОС Windows 267 00:12:44,580 --> 00:12:46,770 Вікно програми просто зникають. 268 00:12:46,770 --> 00:12:48,300 Непередбачена помилка. 269 00:12:48,300 --> 00:12:50,840 У середовищі командного рядка ми бачимо щось подібне. 270 00:12:50,840 --> 00:12:54,480 Але саме тому, як я, просто доторкаючись пам'яті, що не належить мені. 271 00:12:54,480 --> 00:12:57,090 >> Так що давайте захищатися від цього а Трохи по-іншому 272 00:12:57,090 --> 00:12:59,010 дивлячись на цій програмі. 273 00:12:59,010 --> 00:13:01,000 Таким чином, знову ж таки, скелет що ми бачили earlier-- 274 00:13:01,000 --> 00:13:02,480 і я виділив цей раз Int. 275 00:13:02,480 --> 00:13:05,900 І весь цей час головним має Справді повертається значення. 276 00:13:05,900 --> 00:13:09,120 Навіть при тому, що в більшості наших лекції приклади ми жодного разу не використали 277 00:13:09,120 --> 00:13:10,990 нічого повертати в основний. 278 00:13:10,990 --> 00:13:13,710 Ми просто написати PRINTF близько фігурна дужка і ось воно. 279 00:13:13,710 --> 00:13:16,500 Але безкоштовно, що компілятор робив для вас, 280 00:13:16,500 --> 00:13:19,510 ефективно, повертається 0 для вас. 281 00:13:19,510 --> 00:13:22,950 Виявляється out-- і це трохи counterintuitive-- що 0 це добре. 282 00:13:22,950 --> 00:13:24,690 Це не означає, брехня сама по собі. 283 00:13:24,690 --> 00:13:29,080 0 добре, і будь-який не-0 Значення, що світ вирішив, 284 00:13:29,080 --> 00:13:30,619 може означати помилку. 285 00:13:30,619 --> 00:13:32,910 Так що якщо ви ще не зіпсував то на вашому комп'ютері, 286 00:13:32,910 --> 00:13:36,600 або програма щойно помер від вас і Ви отримали деякі помилкові вікно 287 00:13:36,600 --> 00:13:40,360 на екрані, кажучи про помилку негативне 49 або помилка 23-- 288 00:13:40,360 --> 00:13:44,170 деякі, здавалося б, довільне value-- ось тому програміст жорстко 289 00:13:44,170 --> 00:13:49,370 Значення як негативний 49 або позитивне 23 для подання будь-якого числа, насмілюся сказати, 290 00:13:49,370 --> 00:13:53,340 з 4000000000 можливих речей що може піти не так в програмі. 291 00:13:53,340 --> 00:13:55,700 >> Так як я міг би взяти Перевага цього я? 292 00:13:55,700 --> 00:13:58,970 Ну, дозвольте мені відкрити програму що я написав заздалегідь, 293 00:13:58,970 --> 00:14:01,450 і копатися онлайн називається привіт 4. 294 00:14:01,450 --> 00:14:05,650 І це майже ідентичні, за винятком того, її отримали трохи перевірки помилок. 295 00:14:05,650 --> 00:14:09,660 В цьому випадку, я знову заявив Основний, як приймаюча два аргументи, 296 00:14:09,660 --> 00:14:13,180 але на цей раз, в рядку 17, повідомлення Я роблю трохи для перевірки відсутності помилок. 297 00:14:13,180 --> 00:14:17,100 Я переконавшись, що агдс дорівнює дорівнює 2. 298 00:14:17,100 --> 00:14:18,960 Бо якщо це так, що означає, що я можу безпечно 299 00:14:18,960 --> 00:14:21,420 торкнутися не тільки кронштейн 0, але кронштейн 1. 300 00:14:21,420 --> 00:14:24,330 І я йду вперед і роздрукувати, В цьому випадку, Zamyla або Rob 301 00:14:24,330 --> 00:14:26,020 або що слово, яке я надрукував. 302 00:14:26,020 --> 00:14:28,020 І тепер тільки, щоб отримати трохи більш правильним, 303 00:14:28,020 --> 00:14:31,910 Я збираюся явно повернутися 0 для позначення все добре. 304 00:14:31,910 --> 00:14:33,300 Нічого поганого не трапилося. 305 00:14:33,300 --> 00:14:38,590 >> Але за угодою, я збираюся повернутися 1, або відверто будь-який не-0 значення, 306 00:14:38,590 --> 00:14:40,160 якщо що пішло не так. 307 00:14:40,160 --> 00:14:43,270 Тепер користувач не збирається помічаєте, що відбувається. 308 00:14:43,270 --> 00:14:50,410 Дійсно, якщо я йду в цей каталог, ми збільшення і роблять привіт 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla поводиться, як я очікую. 310 00:14:54,210 --> 00:14:58,570 Але якщо я, замість не вводьте нічого, нічого, здається, відбудеться, 311 00:14:58,570 --> 00:14:59,680 але це не катастрофа. 312 00:14:59,680 --> 00:15:04,660 І якщо я, замість щось робити як Роб є супроводжуючий 313 00:15:04,660 --> 00:15:07,550 в Thayer-- обміну довільна інформація. 314 00:15:07,550 --> 00:15:13,680 Але зауважте, агду 1, 2, 3, 4, і Тепер 5 повинен існувати в пам'яті. 315 00:15:13,680 --> 00:15:16,540 Це теж не те, що моя програма очікує, 316 00:15:16,540 --> 00:15:20,300 бо я перевірив чи агдс дорівнює дорівнює 2 чи ні. 317 00:15:20,300 --> 00:15:22,140 Так що я тепер захищає проти цього. 318 00:15:22,140 --> 00:15:25,290 >> Тепер, як в сторону, ми programmer-- або скоріше ми users-- 319 00:15:25,290 --> 00:15:29,670 ніколи не бачити, що 0 або 1, але з використанням Інструмент під назвою відладчик або інших інструментів, 320 00:15:29,670 --> 00:15:32,250 як ми побачимо перед довго, ви програміст 321 00:15:32,250 --> 00:15:36,590 може побачити, що може бути відбувається не так всередині вашої програми. 322 00:15:36,590 --> 00:15:39,170 >> Таким чином, будь-які питання по агдс? 323 00:15:39,170 --> 00:15:40,873 Так. 324 00:15:40,873 --> 00:15:45,292 >> АУДИТОРІЯ: я бачив, де вони не мали характер, [нерозбірливо] 325 00:15:45,292 --> 00:15:49,669 просто сказав рядок зірки д, як характер зірочка кома. 326 00:15:49,669 --> 00:15:50,710 Чи є вони еквівалентні тут? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Малан: Вони. 328 00:15:51,626 --> 00:15:55,080 Таким чином, питання, у вас є іноді бачив програми 329 00:15:55,080 --> 00:15:57,270 як це, що ні кажуть рядок агду кронштейн 330 00:15:57,270 --> 00:16:01,015 але замість цього щось сказати як сЬаг зірка агду кронштейна. 331 00:16:01,015 --> 00:16:03,140 І є навіть друга варіанти, які ви можете бачити. 332 00:16:03,140 --> 00:16:04,264 Вони дійсно еквівалентні. 333 00:16:04,264 --> 00:16:06,240 В даний час, у нас є ці роду підготовки коліс 334 00:16:06,240 --> 00:16:09,737 на у вигляді рядка в CS50 бібліотека, але в трохи більше тижня 335 00:16:09,737 --> 00:16:12,570 або таким чином ми збираємося видалити, що обструкція в цілому і насправді 336 00:16:12,570 --> 00:16:16,820 Подивіться, що вугілля і зірки , І як ті, ставляться до пам'яті 337 00:16:16,820 --> 00:16:18,140 уявлення в цілому. 338 00:16:18,140 --> 00:16:19,540 Таким чином, ми повернемося до цього. 339 00:16:19,540 --> 00:16:21,540 >> Інші питання по нашій ARGV або агдс? 340 00:16:21,540 --> 00:16:22,397 Так. 341 00:16:22,397 --> 00:16:24,438 АУДИТОРІЯ: Чому це повернутися Помилка [нерозбірливо]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Малан: Чому зробив це повертає помилку only-- о! 344 00:16:29,230 --> 00:16:31,813 В попередньому випадку, коли ми були возитися навколо з пам'яттю, 345 00:16:31,813 --> 00:16:35,110 чому це тільки повертає помилку коли я дійсно набрали велику кількість? 346 00:16:35,110 --> 00:16:36,620 Коротка відповідь, ми просто пощастило. 347 00:16:36,620 --> 00:16:39,240 Взагалі кажучи, комп'ютер виділяє пам'ять в шматках, 348 00:16:39,240 --> 00:16:42,900 і він дав мені достатньо великий шматок, що Я пішов, не будучи поміченим, 349 00:16:42,900 --> 00:16:46,280 зворушливою кронштейна 2, кронштейна 3, Кронштейн 50, але як тільки я натиснув 350 00:16:46,280 --> 00:16:49,080 моя удача, я пішов за Кордони шматок пам'яті 351 00:16:49,080 --> 00:16:50,520 операційна система дала мені. 352 00:16:50,520 --> 00:16:52,720 І ось, коли його притискаються і сказав, немає. 353 00:16:52,720 --> 00:16:54,580 Помилка сегментації. 354 00:16:54,580 --> 00:16:55,692 Так. 355 00:16:55,692 --> 00:16:58,890 >> АУДИТОРІЯ: Як комп'ютер знати значення агдс? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Малан: Як комп'ютер знати значення агдс? 357 00:17:02,390 --> 00:17:07,920 Коли ви запускаєте програму, що програма, за характером миготливою рядку 358 00:17:07,920 --> 00:17:11,359 передається масив Слова, які були введені 359 00:17:11,359 --> 00:17:13,300 в командному рядку, що було друкується в підказці. 360 00:17:13,300 --> 00:17:16,569 І так це ваша операційна система, яка по суті 361 00:17:16,569 --> 00:17:20,329 заповнює аргументи головних для вас. 362 00:17:20,329 --> 00:17:22,829 Так ось одна з послуг що ви отримаєте, свого роду таємно 363 00:17:22,829 --> 00:17:24,869 під капотом операційної системи. 364 00:17:24,869 --> 00:17:27,118 Інші питання? 365 00:17:27,118 --> 00:17:27,618 Так. 366 00:17:27,618 --> 00:17:29,787 >> АУДИТОРІЯ: Що це означає дамп? 367 00:17:29,787 --> 00:17:31,370 DAVID Малан: Що це означає дамп? 368 00:17:31,370 --> 00:17:32,950 Так що це хороше запитання. 369 00:17:32,950 --> 00:17:35,312 І дозвольте мені повернутися в цей каталог тут. 370 00:17:35,312 --> 00:17:37,270 І ви помітите, що У мене є новий файл там. 371 00:17:37,270 --> 00:17:41,670 Це дійсно називається ядро, і це насправді, як правило, пристойного розміру файлу. 372 00:17:41,670 --> 00:17:45,300 Тобто по суті знімок вміст пам'яті моєї програми 373 00:17:45,300 --> 00:17:46,902 або ОЗУ, коли він розбився. 374 00:17:46,902 --> 00:17:49,110 І це буде корисно, потенційно, діагностично, 375 00:17:49,110 --> 00:17:52,850 як тільки ми говоримо в майбутній лекції і розділ про налагодження, 376 00:17:52,850 --> 00:17:55,730 тому що ви можете насправді робити еквівалент цифрової розтину 377 00:17:55,730 --> 00:18:00,300 на цьому файлі, щоб допомогти з'ясувати те, що ви зробили не так у вашій програмі. 378 00:18:00,300 --> 00:18:01,220 Так. 379 00:18:01,220 --> 00:18:04,450 >> Зали: агдс команди в Сам, або ви можете назвати це нічого? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Малан: Хороше питання. 381 00:18:05,575 --> 00:18:08,040 Є агдс команди в собі, або ви можете назвати це нічого? 382 00:18:08,040 --> 00:18:09,290 Це безумовно не є командою. 383 00:18:09,290 --> 00:18:13,500 Це просто змінної ім'я або ім'я аргументу в, 384 00:18:13,500 --> 00:18:15,481 і так абсолютно Можна назвати це Foo, 385 00:18:15,481 --> 00:18:18,480 ми могли б назвати цей бар, які мають тенденцію бути виходу на словах, що комп'ютерні 386 00:18:18,480 --> 00:18:19,860 вчений йде в. 387 00:18:19,860 --> 00:18:22,820 Але за угодою, ми використовуємо ARGC і ARGV. 388 00:18:22,820 --> 00:18:25,360 Але це всього лише людина Конвенція, не більше того. 389 00:18:25,360 --> 00:18:25,860 Добре. 390 00:18:25,860 --> 00:18:28,140 Так виходить, я був говорю трохи білого lie-- 391 00:18:28,140 --> 00:18:31,264 і, чесно кажучи, в майбутньому, ви побачите ми говорили інші білі брехня. 392 00:18:31,264 --> 00:18:33,510 Але зараз, ми збираємося відігніть один з них. 393 00:18:33,510 --> 00:18:37,310 В цьому випадку тут, коли я раніше побіг програму як ./hello або ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, ми повинні були вміст мого пам'яті комп'ютера, дивлячись приблизно як 395 00:18:42,780 --> 00:18:43,280 це. 396 00:18:43,280 --> 00:18:45,070 Але згадаємо, що рядок є. 397 00:18:45,070 --> 00:18:49,279 Що ми говоримо, тиждень тому, що рядок насправді під капотом? 398 00:18:49,279 --> 00:18:50,320 АУДИТОРІЯ: Масив символів. 399 00:18:50,320 --> 00:18:52,111 DAVID Малан: Це масив символів, чи не так? 400 00:18:52,111 --> 00:18:55,760 Таким чином, ми, можливо, є масив рядка, але, в свою чергу, рядок 401 00:18:55,760 --> 00:18:57,150 це масив символів. 402 00:18:57,150 --> 00:19:00,010 Так що, якщо я дійсно хочу бути анал, коли я малюю цю картину, 403 00:19:00,010 --> 00:19:03,290 Я повинен дійсно бути малюнок це трохи більше, як це, 404 00:19:03,290 --> 00:19:08,000 причому в кожній з них Індекси моєї агду масиву, 405 00:19:08,000 --> 00:19:11,432 існує сама по собі весь рядок , Що само по собі в масиві. 406 00:19:11,432 --> 00:19:13,140 А тепер брехня ми говоримо сьогодні 407 00:19:13,140 --> 00:19:15,181 є те, що картина не виглядають цілком так. 408 00:19:15,181 --> 00:19:19,110 Справді, невеликі квадрати зазвичай за межами великих прямокутників 409 00:19:19,110 --> 00:19:19,610 є. 410 00:19:19,610 --> 00:19:21,280 Але ми повернемося до того, що незабаром. 411 00:19:21,280 --> 00:19:25,440 Але це ./hello зворотний слеш 0, що бути спеціальний символ, який 412 00:19:25,440 --> 00:19:28,310 розмежовує кінець рядка, і у нас є ще один за 413 00:19:28,310 --> 00:19:29,360 Ім'я Zamyla в. 414 00:19:29,360 --> 00:19:30,900 Так що ж це означає? 415 00:19:30,900 --> 00:19:33,410 >> Ну, дозвольте мені йти вперед і відкрити дві інші приклади 416 00:19:33,410 --> 00:19:35,220 , Які доступні в Інтернеті. 417 00:19:35,220 --> 00:19:40,590 Одна з них називається argv1.c , А інший argv2. 418 00:19:40,590 --> 00:19:44,260 Це супер-проста програма, яка відрізняється від минулих програм 419 00:19:44,260 --> 00:19:47,260 в тому, що тепер я використовую агдс і ARGV тут. 420 00:19:47,260 --> 00:19:54,300 І тепер я інтеграції з цикл в рядку 18, від г = 0 на до ARGC. 421 00:19:54,300 --> 00:19:56,850 І що ж я буду робити з цього рядка коду тут? 422 00:19:56,850 --> 00:19:58,270 Англійською. 423 00:19:58,270 --> 00:20:00,510 Це, очевидно, демонструє використання агдс. 424 00:20:00,510 --> 00:20:03,670 Але в англійській мові, що робить це зробити, якщо я запустити цю програму? 425 00:20:03,670 --> 00:20:04,366 Да? 426 00:20:04,366 --> 00:20:07,386 >> АУДИТОРІЯ: Це буде друкувати ваші екран стільки разів, скільки ви хочете. 427 00:20:07,386 --> 00:20:08,260 DAVID Малан: Точно. 428 00:20:08,260 --> 00:20:10,480 Тому, що б слова введення введіть в командному рядку, це 429 00:20:10,480 --> 00:20:13,120 збирається вивергнути їм на мене по одному в рядку. 430 00:20:13,120 --> 00:20:14,370 Так що давайте йти вперед і робити це. 431 00:20:14,370 --> 00:20:17,862 Відпусти мене в моєму каталозі і роблять argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 А тепер, давайте тримати його просто. 434 00:20:21,770 --> 00:20:23,834 Давайте нічого не робити в першу чергу. 435 00:20:23,834 --> 00:20:26,750 Це зробив роздрукувати одну річ, і ось дійсно назва програми, 436 00:20:26,750 --> 00:20:28,240 тому що це в кронштейні 0. 437 00:20:28,240 --> 00:20:33,290 Якщо я зараз сказати Фу, він збирається зробити ці двоє, і якщо я говорю Foo бар, 438 00:20:33,290 --> 00:20:35,580 він збирається сказати ці три речі. 439 00:20:35,580 --> 00:20:37,740 Тепер ось кілька цікаво, може бути. 440 00:20:37,740 --> 00:20:41,450 Але нагадаємо, що ARGV є масив рядків, 441 00:20:41,450 --> 00:20:45,960 але рядок це масив символів, так що ми можемо взяти речі на сходинку вище 442 00:20:45,960 --> 00:20:48,560 і застосувати, що основна Логіка і зробити код, який 443 00:20:48,560 --> 00:20:51,160 виглядає трохи більш загадковим, за загальним визнанням. 444 00:20:51,160 --> 00:20:53,540 Але, маючи вкладений цикл, то те саме що 445 00:20:53,540 --> 00:20:57,030 до того, що ви, можливо, пам'ятаєте з Маріо, наприклад, якщо ви зробили це таким чином. 446 00:20:57,030 --> 00:21:00,380 >> Так що тепер помітити в рядку 19, я знову перебору моїх аргументів, 447 00:21:00,380 --> 00:21:02,410 від 0 на до ARGC. 448 00:21:02,410 --> 00:21:05,510 І тепер відповідно 21-- Я запозичення трюк з останнього week-- 449 00:21:05,510 --> 00:21:11,090 Я перевіряю, що є Довжина агду кронштейна I. 450 00:21:11,090 --> 00:21:12,920 Я зберігаю цю відповідь у п. 451 00:21:12,920 --> 00:21:18,230 А потім я інтегруючи від J на до п, де J встановлюється на 0. 452 00:21:18,230 --> 00:21:19,460 Так, Конвенція для підрахунку. 453 00:21:19,460 --> 00:21:22,335 Якщо ви вже використовували I, якщо у вас є вкладений цикл, ви не можете використовувати я знову, 454 00:21:22,335 --> 00:21:25,770 в іншому випадку ви будете колошматити, потенційно, значення за межами внутрішнього циклу. 455 00:21:25,770 --> 00:21:27,200 Тому я використовую J за угодою. 456 00:21:27,200 --> 00:21:28,020 Ми могли б використовувати к. 457 00:21:28,020 --> 00:21:31,080 Якщо у вас є більше, ніж до, ви, ймовірно, занадто багато вкладеності, звичайно. 458 00:21:31,080 --> 00:21:33,800 Але тепер, зауважив мого Printf лінія трохи відрізняється. 459 00:21:33,800 --> 00:21:37,520 Я не друкує% S, я друк% С, що, звичайно, 460 00:21:37,520 --> 00:21:39,460 є заповнювачем для гольця. 461 00:21:39,460 --> 00:21:40,770 >> А тепер зверніть увагу цей синтаксис. 462 00:21:40,770 --> 00:21:41,270 Новий. 463 00:21:41,270 --> 00:21:42,630 Ми не бачили його раніше. 464 00:21:42,630 --> 00:21:47,290 Але логічно, це просто означає, отримати-й рядок в ARGV 465 00:21:47,290 --> 00:21:50,067 і отримати JTH який? 466 00:21:50,067 --> 00:21:50,900 АУДИТОРІЯ: Характер. 467 00:21:50,900 --> 00:21:52,800 DAVID Малан: Характер у цьому рядку. 468 00:21:52,800 --> 00:21:57,100 Так за допомогою квадратних дужок потім квадратних дужках, 469 00:21:57,100 --> 00:22:00,390 це дайвінг перший в рядки ARGV в, 470 00:22:00,390 --> 00:22:02,225 , А потім другий квадратні дужки з J 471 00:22:02,225 --> 00:22:06,580 дайвінг в характерах що певна рядок в ARGV. 472 00:22:06,580 --> 00:22:09,562 А потім, для рівного рахунку, Я друкую нову лінію тут. 473 00:22:09,562 --> 00:22:12,020 Так що тепер дозвольте мені йти вперед і відкрити до трохи більшого вікні 474 00:22:12,020 --> 00:22:13,600 так що ми можемо побачити це в дії. 475 00:22:13,600 --> 00:22:15,700 Відпусти мене в цій папці. 476 00:22:15,700 --> 00:22:22,550 А тепер роблять агду-2-- whoops-- зробити ARGV-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 І це трохи важко читати вертикально, 479 00:22:24,860 --> 00:22:27,920 але це дійсно ім'я Програма, після чого порожній рядку. 480 00:22:27,920 --> 00:22:30,210 Тепер дозвольте мені йти вперед і робити щось. 481 00:22:30,210 --> 00:22:33,210 Аналогічно важко читати, але це дійсно друку одного символу в рядку. 482 00:22:33,210 --> 00:22:36,780 А якщо я бар, то тепер друк ті построчно. 483 00:22:36,780 --> 00:22:40,140 Так винос тут не стільки що, нічого собі, дивитися на цій акуратній новий трюк 484 00:22:40,140 --> 00:22:44,750 де ви можете отримати на вміст специфічних букв масив в, 485 00:22:44,750 --> 00:22:48,380 а те, як ми приймаємо це основна ідеї, як індексування в масив, 486 00:22:48,380 --> 00:22:51,620 а потім індексації в Масив, який був у цьому масиві, 487 00:22:51,620 --> 00:22:56,180 і просто застосовуючи ті ж ідеї трохи складніші приклади. 488 00:22:56,180 --> 00:22:59,560 Але основи справді не змінилося, навіть з минулого тижня. 489 00:22:59,560 --> 00:23:02,350 >> Тепер це свого роду своєчасно, в тому, що, нагадаємо, в нульовій тижня 490 00:23:02,350 --> 00:23:04,110 ми грали з телефонною книгою, як це. 491 00:23:04,110 --> 00:23:06,670 І хоча це, очевидно, фізичні шматочки паперу, 492 00:23:06,670 --> 00:23:09,150 Ви можете роду думати Телефонна книга у вигляді масиву. 493 00:23:09,150 --> 00:23:12,770 Звичайно, якщо б ви були повторно реалізувати це шматочки ці папірці 494 00:23:12,770 --> 00:23:15,260 в комп'ютері, можливо ви повинні використовувати те 495 00:23:15,260 --> 00:23:20,270 як масив для зберігання всіх тих, імена та номери з усіх шляху 496 00:23:20,270 --> 00:23:23,800 до Z. Так що це добре, бо це дозволяє нам можливість, 497 00:23:23,800 --> 00:23:28,310 можливо, розглянути, як ви могли б насправді реалізувати щось подібне. 498 00:23:28,310 --> 00:23:31,250 Як і в серії дверей тут. 499 00:23:31,250 --> 00:23:36,380 Так що, якщо я could-- нам потрібно один добровільно прийти на до. 500 00:23:36,380 --> 00:23:36,980 Подивимося. 501 00:23:36,980 --> 00:23:40,650 Незнайоме обличчя, можливо, незнайоме обличчя, можливо. 502 00:23:40,650 --> 00:23:42,090 Як щодо помаранчевим кольором? 503 00:23:42,090 --> 00:23:42,680 Ось. 504 00:23:42,680 --> 00:23:45,870 Оранжевий сорочка, давай до. 505 00:23:45,870 --> 00:23:52,230 >> Давайте підемо далі тепер і хід ці двері на сторону, 506 00:23:52,230 --> 00:23:54,020 рухатися їх з колії на мить. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Як тебе звуть? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID Малан: Аджай. 511 00:23:58,655 --> 00:23:58,680 Девід. 512 00:23:58,680 --> 00:23:59,451 Приємно познайомитися. 513 00:23:59,451 --> 00:23:59,950 Добре. 514 00:23:59,950 --> 00:24:04,500 Отже, ми маємо за ці шість Двері в цифровому вигляді screen-- 515 00:24:04,500 --> 00:24:07,810 або, скоріше, сім дверей на screen-- цілу купу цифр. 516 00:24:07,810 --> 00:24:10,099 І я не сказав вам нічого в advance-- погодився? 517 00:24:10,099 --> 00:24:11,140 AJAY: Нічого заздалегідь. 518 00:24:11,140 --> 00:24:14,730 DAVID Малан: Все, що я хочу, щоб ти Тепер, щоб знайти для мене, і для нас, 519 00:24:14,730 --> 00:24:20,920 дійсно, число 50, один крок за один раз. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Номер 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID мала: 50 Число. 522 00:24:22,580 --> 00:24:24,746 І ви можете показати те, що це За кожним з цих дверей 523 00:24:24,746 --> 00:24:27,930 просто торкаючись до нього пальцем. 524 00:24:27,930 --> 00:24:31,364 Чорт візьми. [Сміх] 525 00:24:31,364 --> 00:24:34,560 >> [Оплески] 526 00:24:34,560 --> 00:24:39,540 >> Дуже добре зроблено. 527 00:24:39,540 --> 00:24:40,400 Добре. 528 00:24:40,400 --> 00:24:44,090 У нас є прекрасний подарунок Приз для вас тут. 529 00:24:44,090 --> 00:24:46,520 Ваш вибір фільмів ми обговорили минулого тижня. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: О, Боже. 531 00:24:47,362 --> 00:24:49,050 О, я ніколи не бачив SpaceBalls. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Малан: Космічні яйця. 533 00:24:49,520 --> 00:24:50,140 Добре. 534 00:24:50,140 --> 00:24:53,790 Так тримати тільки на один момент. 535 00:24:53,790 --> 00:24:57,430 How-- давайте зробимо це здатні навчатися moment-- 536 00:24:57,430 --> 00:25:00,412 як ви йти про знаходження кількості 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Я вибрав випадково. 538 00:25:01,370 --> 00:25:03,420 DAVID Малан: Таким чином, ви вибрали випадково і пощастило. 539 00:25:03,420 --> 00:25:03,790 AJAY: Так. 540 00:25:03,790 --> 00:25:04,456 DAVID Малан: ОК. 541 00:25:04,456 --> 00:25:05,050 Відмінно. 542 00:25:05,050 --> 00:25:08,470 Так що тепер, було вам не стали щасливими, що ще 543 00:25:08,470 --> 00:25:10,210 могло б відбутися за цими дверима? 544 00:25:10,210 --> 00:25:12,930 Так що, якщо я йду вперед і виявити ці цифри тут, 545 00:25:12,930 --> 00:25:15,180 вони насправді у випадковому порядку. 546 00:25:15,180 --> 00:25:17,750 І найкраще, що ви могли б мати зроблено, чесно кажучи, по, в кінцевому рахунку ,, 547 00:25:17,750 --> 00:25:19,410 в гіршому випадку, перевірка їх усіх. 548 00:25:19,410 --> 00:25:23,000 Таким чином, ви отримали супер-повезло, що не те, що ми назвали б алгоритм. 549 00:25:23,000 --> 00:25:24,730 Так, вітаю. 550 00:25:24,730 --> 00:25:27,010 Але тепер let's-- гумору мене, якби ви могли. 551 00:25:27,010 --> 00:25:28,310 Підемо в цій вкладці тут. 552 00:25:28,310 --> 00:25:31,460 А ось цифри в чітко що, здається, випадковий порядок, 553 00:25:31,460 --> 00:25:32,280 , І вони були. 554 00:25:32,280 --> 00:25:35,160 Але тепер, якщо я замість претензії що за цими дверима 555 00:25:35,160 --> 00:25:39,070 це числа, які сортуються. 556 00:25:39,070 --> 00:25:41,780 Зараз метою є також знайти нам номер 50. 557 00:25:41,780 --> 00:25:45,910 Але зробити це алгоритмічно, і розкажіть, як ви збираєтеся про це. 558 00:25:45,910 --> 00:25:48,020 І якщо ви знайдете його, ви тримаєте фільм. 559 00:25:48,020 --> 00:25:49,520 Ви не знаходите це, ви даєте його назад. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Так що я збираюся перевірити кінці по-перше, щоб визначити, there's-- 562 00:25:58,112 --> 00:26:02,048 [Сміх та оплески] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Малан: Тут ви йдете. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Давайте поглянемо на один попередників Аджая, 567 00:26:21,700 --> 00:26:25,450 Шон, який був не настільки щасливий. 568 00:26:25,450 --> 00:26:28,670 Отже, ваша задача тут, Шон, полягає в наступному. 569 00:26:28,670 --> 00:26:32,970 Я ховається за них Двері число сім, 570 00:26:32,970 --> 00:26:37,200 але прибраний в деяких з цих дверей а інші невід'ємні числа. 571 00:26:37,200 --> 00:26:40,730 І ваша мета думати про це Верхній ряд чисел, як тільки масив. 572 00:26:40,730 --> 00:26:43,590 Ми просто послідовність частин паперу з номерами за ними. 573 00:26:43,590 --> 00:26:47,640 І ваша мета, тільки за допомогою верхньої Масив тут, знайти мені номер сім. 574 00:26:47,640 --> 00:26:51,200 І ми тоді будемо критикувати як ви ходите робити це. 575 00:26:51,200 --> 00:26:52,920 Знайти нам номер сім, будь ласка. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Кількість 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 Це не питання з підступом. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 В цей момент ваш приводу не дуже добре, так що ви могли б також продовжувати йти. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Продовжуй. 590 00:27:39,802 --> 00:27:42,510 Чесно кажучи, я не можу не поцікавитися, то, що ви навіть думати о. 591 00:27:42,510 --> 00:27:44,990 >> ШОН: Я можу взяти тільки з верхнього ряду. 592 00:27:44,990 --> 00:27:46,240 DAVID мала: тільки верхній ряд. 593 00:27:46,240 --> 00:27:47,281 Отже, ви отримали три залишилося. 594 00:27:47,281 --> 00:27:48,310 Так знайдіть мені 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Аудиторія кричить ПРОПОЗИЦІЇ] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Так як з них були напрочуд з дуже різних причин. 599 00:28:26,130 --> 00:28:29,150 Так що це, де ми зупинилися хвилину назад, 600 00:28:29,150 --> 00:28:32,530 та ключових ідей тут було ці двері були номери 601 00:28:32,530 --> 00:28:37,390 за ними, які були відсортовані, ідеальним винос, для яких є те, що ви могли б зробити 602 00:28:37,390 --> 00:28:39,670 принципово краще в цей другий example-- 603 00:28:39,670 --> 00:28:42,380 і, дійсно, це було Шона Перша спроба з випадкових чисел 604 00:28:42,380 --> 00:28:45,460 так само, як before--, але як тільки як ці цифри сортуються, 605 00:28:45,460 --> 00:28:47,980 так само, як в телефонній книзі, що ви можете, очевидно, робити? 606 00:28:47,980 --> 00:28:50,090 Або, як можна використовувати ці знання? 607 00:28:50,090 --> 00:28:51,530 Так. 608 00:28:51,530 --> 00:28:54,910 >> АУДИТОРІЯ: Ви йдете на півдорозі [нерозбірливо]. 609 00:28:54,910 --> 00:28:55,660 DAVID Малан: Так. 610 00:28:55,660 --> 00:28:56,160 Точно. 611 00:28:56,160 --> 00:28:59,680 Так початкова інстинкт Аджая було перевірити кінці, наскільки я пам'ятаю, 612 00:28:59,680 --> 00:29:02,320 а потім ми начебто обробкою Приклад швидко. 613 00:29:02,320 --> 00:29:05,220 Але якщо ми почали робити це більш методично уздовж цих ліній, 614 00:29:05,220 --> 00:29:07,860 але починаючи, можливо, в середній, тому що вони сортуються, 615 00:29:07,860 --> 00:29:10,900 як тільки ми відкриваємо номер 16, тому ми знаю-- 616 00:29:10,900 --> 00:29:14,850 і давайте робити те, that-- ми Тому знаю, що 50, в сьогоднішньому випадку, 617 00:29:14,850 --> 00:29:16,080 треба бути справа. 618 00:29:16,080 --> 00:29:18,735 Так само, як в нульовому, коли тиждень ми розірвали телефонну книгу навпіл 619 00:29:18,735 --> 00:29:21,490 і кинув половину Проблема ж, та ж ідея тут. 620 00:29:21,490 --> 00:29:23,680 Ми можемо кинути цю половину проблеми далеко. 621 00:29:23,680 --> 00:29:25,730 І, напевно, те, що вас може зробити алгоритмічно, 622 00:29:25,730 --> 00:29:28,710 як тільки ви знаєте, що 50 повинно бути вправо, якщо це в будь-якому місці, 623 00:29:28,710 --> 00:29:31,390 це спробувати там, в середині з решти дверей. 624 00:29:31,390 --> 00:29:33,450 Звичайно, 50 вище ніж 42, тому ми можемо 625 00:29:33,450 --> 00:29:36,060 кинути це інші чверть проблеми в сторону, 626 00:29:36,060 --> 00:29:38,510 і, нарешті, визначити щось на зразок 50. 627 00:29:38,510 --> 00:29:41,050 Але так само, як з Телефонна книга, ці цифри 628 00:29:41,050 --> 00:29:44,560 були дані нам вже в відсортований порядок, який залишає нас 629 00:29:44,560 --> 00:29:47,450 з питанням, як вам отримати речі в певному порядку? 630 00:29:47,450 --> 00:29:49,640 І, чесно кажучи, за якою вартістю? 631 00:29:49,640 --> 00:29:51,390 Це одна річ, щоб бути передав телефонну книгу 632 00:29:51,390 --> 00:29:54,810 а потім справити враження на своїх друзів, знаходячи номер телефону дійсно швидко, чи не так? 633 00:29:54,810 --> 00:29:58,520 Розриваючи 32 сторінок, щоб знайти чоловік з 4 мільярдів сторінок, 634 00:29:58,520 --> 00:30:00,470 ми сказали був одним яскравим прикладом. 635 00:30:00,470 --> 00:30:03,320 Але скільки часу це займе Verizon для сортування телефонної книги? 636 00:30:03,320 --> 00:30:06,170 Скільки часу це займе нас сортувати ці сім цифр? 637 00:30:06,170 --> 00:30:10,110 Це питання, яке ми до сих пір повністю ігноруються. 638 00:30:10,110 --> 00:30:12,330 >> Так що давайте відповісти на це питання зараз. 639 00:30:12,330 --> 00:30:15,920 І ми всі з фільмів зараз, але у нас є деякі стрес кулі. 640 00:30:15,920 --> 00:30:19,480 Якщо, скажімо, вісім добровольців Не заперечував би приєднатися до нас тут? 641 00:30:19,480 --> 00:30:24,100 Давайте йти вперед і робити, як про ви четверо, троє з вас тут? 642 00:30:24,100 --> 00:30:25,290 Отримати нові обличчя. 643 00:30:25,290 --> 00:30:27,220 І чотири з вас є? 644 00:30:27,220 --> 00:30:30,760 І now-- давайте не усунуте здесь-- і номер вісім сюди на кінці. 645 00:30:30,760 --> 00:30:32,060 Піднімайтеся. 646 00:30:32,060 --> 00:30:32,560 Добре. 647 00:30:32,560 --> 00:30:37,480 Отже, що ми маємо тут для кожен з вас є число. 648 00:30:37,480 --> 00:30:40,055 Якщо ви хотіли б піти вперед, взяти цей номер. 649 00:30:40,055 --> 00:30:40,763 Як тебе звуть? 650 00:30:40,763 --> 00:30:41,950 >> Арті: Арті. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Малан: Арті, ладно. 652 00:30:43,100 --> 00:30:44,297 Ти число 1. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Амін. 654 00:30:45,310 --> 00:30:46,060 DAVID Малан: Амін. 655 00:30:46,060 --> 00:30:46,820 Девід. 656 00:30:46,820 --> 00:30:47,530 Ти число 2. 657 00:30:47,530 --> 00:30:49,100 І йти вперед, а я передаю Ви аркуші паперу, 658 00:30:49,100 --> 00:30:52,130 вибудовуються себе в передній частині музики виступає в тому ж порядку, що і там. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Привіт, Енді. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Малан: Енді, це приємно бачити вас. 661 00:30:53,970 --> 00:30:54,520 Номер 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Яків. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Малан: Яків, число 4. 664 00:30:56,760 --> 00:30:57,549 Ласкаво просимо на борт. 665 00:30:57,549 --> 00:30:58,090 ГРАНТ: Грант. 666 00:30:58,090 --> 00:30:58,881 DAVID Малан: Грант. 667 00:30:58,881 --> 00:31:00,348 Номер 5. 668 00:31:00,348 --> 00:31:01,200 >> Аланна: Аланна. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Малан: Аланна, число 6. 670 00:31:02,766 --> 00:31:03,589 >> ФРАНЧЕСКА: Френсіс. 671 00:31:03,589 --> 00:31:04,880 DAVID Малан: Френсіс, число 7. 672 00:31:04,880 --> 00:31:05,200 І? 673 00:31:05,200 --> 00:31:05,830 >> Рейчел: Рейчел. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Малан: Рейчел, число 8. 675 00:31:06,815 --> 00:31:07,100 Добре. 676 00:31:07,100 --> 00:31:08,766 Йдемо далі і отримати собі в цьому порядку. 677 00:31:08,766 --> 00:31:11,440 Дозвольте мені сказати одну решта музика стоїть на місці. 678 00:31:11,440 --> 00:31:13,670 Де вам потрібен стенд? 679 00:31:13,670 --> 00:31:14,170 Добре. 680 00:31:14,170 --> 00:31:18,710 Йдемо далі і просто поставити свої номери де глядачі можуть побачити їх на, 681 00:31:18,710 --> 00:31:20,340 пюпітр назовні. 682 00:31:20,340 --> 00:31:27,240 І, сподіваюся, наша перша перевірка справності здесь-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Ой-ой. 684 00:31:27,890 --> 00:31:29,070 Почекай хвилину. 685 00:31:29,070 --> 00:31:31,140 Ми не маємо 8. 686 00:31:31,140 --> 00:31:35,180 Мені потрібно виселити вас з Приклад-то. 687 00:31:35,180 --> 00:31:35,680 Кількість 688 00:31:35,680 --> 00:31:36,940 Ні, це нормально. 689 00:31:36,940 --> 00:31:37,890 Подивимося. 690 00:31:37,890 --> 00:31:38,880 Ми можемо зробити це. 691 00:31:38,880 --> 00:31:39,440 Очікування. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Там ми йдемо. 694 00:31:45,740 --> 00:31:46,800 Правильно. 695 00:31:46,800 --> 00:31:47,360 Добре. 696 00:31:47,360 --> 00:31:50,260 Отже, тепер у нас є 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 Добре. 698 00:31:50,760 --> 00:31:51,360 Відмінно. 699 00:31:51,360 --> 00:31:54,400 >> Отже питання в руці, в якою ціною, і через те, що метод, 700 00:31:54,400 --> 00:31:58,580 ми можемо насправді розібратися ці цифри тут так що ми можемо почасти працювати у зворотному напрямку, 701 00:31:58,580 --> 00:32:02,759 в кінцевому рахунку, і decide-- це дійсно вражає, це дійсно ефективним, 702 00:32:02,759 --> 00:32:04,550 що я можу розділити і завоювати телефонну книгу? 703 00:32:04,550 --> 00:32:06,716 Це дійсно ефективно, що Я можу розділяй і володарюй 704 00:32:06,716 --> 00:32:08,600 ці цифрові штук папери на борту, 705 00:32:08,600 --> 00:32:14,500 якщо можливо, це буде коштувати нам стан в часі або енергії або цикли процесора 706 00:32:14,500 --> 00:32:17,340 насправді отримати наші дані в якій певному порядку? 707 00:32:17,340 --> 00:32:18,930 Так що давайте поставити це питання. 708 00:32:18,930 --> 00:32:22,077 >> Так перш за все, ці цифри в значній мірі випадковому порядку, 709 00:32:22,077 --> 00:32:24,160 і я збираюся запропонувати один алгоритм, або процес 710 00:32:24,160 --> 00:32:25,970 , За допомогою якого ми можемо розібратися цих людей. 711 00:32:25,970 --> 00:32:28,100 Я збираюся підійти це досить наївно. 712 00:32:28,100 --> 00:32:30,730 І я збираюся визнавати що це начебто багато для мене 713 00:32:30,730 --> 00:32:32,890 обернути свій розум навколо встановити цілі дані відразу. 714 00:32:32,890 --> 00:32:33,640 Але ви знаєте, що? 715 00:32:33,640 --> 00:32:37,450 Я збираюся зробити деякі дуже прості граничні виправлення. 716 00:32:37,450 --> 00:32:41,152 4 і 2 вийшли з ладу, якщо мета полягає в тому, щоб перейти від 1 до від 8. 717 00:32:41,152 --> 00:32:41,860 Таким чином, ви знаєте, що? 718 00:32:41,860 --> 00:32:43,776 Я буду мати вас хлопці поміняти, якщо ви перейдіть 719 00:32:43,776 --> 00:32:46,380 фізично позиції і Ваші шматочки паперу. 720 00:32:46,380 --> 00:32:47,894 Тепер 4 і 6, це в порядку. 721 00:32:47,894 --> 00:32:49,060 Я збираюся залишити ті бути. 722 00:32:49,060 --> 00:32:50,227 6 і 8, ті, в порядку. 723 00:32:50,227 --> 00:32:51,185 Going, щоб залишити їх у спокої. 724 00:32:51,185 --> 00:32:52,170 8 and1, не в порядку. 725 00:32:52,170 --> 00:32:54,790 Якщо ви два не заперечував би заміни. 726 00:32:54,790 --> 00:32:57,300 Тепер 8 і 3, якщо ви, хлопці, могли обміняти. 727 00:32:57,300 --> 00:32:59,320 8 і 7, якщо ви, хлопці, могли обміняти. 728 00:32:59,320 --> 00:33:01,790 І 8 і 5, якщо ви, хлопці, могли обміняти. 729 00:33:01,790 --> 00:33:03,980 >> Тепер, я зробив? 730 00:33:03,980 --> 00:33:05,200 Ні, очевидно, немає. 731 00:33:05,200 --> 00:33:07,880 Але я зробив Ситуація краще, чи не так? 732 00:33:07,880 --> 00:33:09,430 Як там ваше ім'я, номер 8? 733 00:33:09,430 --> 00:33:10,055 >> Рейчел: Рейчел. 734 00:33:10,055 --> 00:33:12,850 DAVID Малан: Так Рейчел ефективно пузирилися досить далеко, 735 00:33:12,850 --> 00:33:15,660 весь шлях до кінця мій масив чисел тут. 736 00:33:15,660 --> 00:33:17,310 І так, що проблема частково вирішена. 737 00:33:17,310 --> 00:33:21,670 Тепер, очевидно, 2 все ще потребує рухатися небагато, і 4 і 6 і 1. 738 00:33:21,670 --> 00:33:24,420 Але я, здається, отримали трохи ближче до рішення. 739 00:33:24,420 --> 00:33:26,790 Так давайте застосуємо цей же наївно евристичний знову. 740 00:33:26,790 --> 00:33:27,690 2 і 4, ОК. 741 00:33:27,690 --> 00:33:28,810 4 і 6, ОК. 742 00:33:28,810 --> 00:33:29,930 6 та 1, мм мм. 743 00:33:29,930 --> 00:33:32,230 Давайте своп. 744 00:33:32,230 --> 00:33:33,200 6 і 3, мм мм. 745 00:33:33,200 --> 00:33:34,420 Давайте своп. 746 00:33:34,420 --> 00:33:35,580 6 та 7 в порядку. 747 00:33:35,580 --> 00:33:36,590 7 і 5, Ні. 748 00:33:36,590 --> 00:33:37,790 Давайте своп. 749 00:33:37,790 --> 00:33:38,470 А тепер 7 і 8. 750 00:33:38,470 --> 00:33:39,862 І те, що тебе звуть? 751 00:33:39,862 --> 00:33:40,570 ФРАНЧЕСКА: Френсіс. 752 00:33:40,570 --> 00:33:41,445 DAVID Малан: Френсіс. 753 00:33:41,445 --> 00:33:44,230 Так що тепер Френсіс перебуває в ще краще Положення, тому що тепер 7 і 8 754 00:33:44,230 --> 00:33:46,440 правильно пропускають до вершини. 755 00:33:46,440 --> 00:33:47,510 Так 2 і 4, ОК. 756 00:33:47,510 --> 00:33:48,720 4 і 1, своп давай. 757 00:33:48,720 --> 00:33:50,410 4 і 3, своп давай. 758 00:33:50,410 --> 00:33:51,550 4 і 6, що ти в порядку. 759 00:33:51,550 --> 00:33:53,340 6 і 5, своп давай. 760 00:33:53,340 --> 00:33:54,590 І тепер ці хлопці хороші. 761 00:33:54,590 --> 00:33:55,780 Ми майже на місці. 762 00:33:55,780 --> 00:33:57,706 2 і 1, з того, так поміняти. 763 00:33:57,706 --> 00:33:59,080 А тепер зробимо простий тест. 764 00:33:59,080 --> 00:34:03,080 2 і 3, 3 і 4, 4 і 5, 5 і 6, 6 і 7, 8. 765 00:34:03,080 --> 00:34:05,060 Отже, ми закінчили. 766 00:34:05,060 --> 00:34:09,310 >> Але якою ціною я теж сортувати тут ці цифри? 767 00:34:09,310 --> 00:34:13,960 Ну, скільки кроків я теж потенційно прийняти при сортуванні цих людей? 768 00:34:13,960 --> 00:34:15,710 Ну, ми ще повернемося до цього питання. 769 00:34:15,710 --> 00:34:18,030 Але, чесно кажучи, якщо ви отримали трохи нудно, от і 770 00:34:18,030 --> 00:34:22,270 вид виявлення в тому, що це не було може бути, самий ефективний алгоритм. 771 00:34:22,270 --> 00:34:25,230 І справді, якщо чесно, я потію тим більше йти назад і вперед. 772 00:34:25,230 --> 00:34:26,639 Це не відчував себе особливо ефективним. 773 00:34:26,639 --> 00:34:27,805 Так давайте спробуємо щось ще. 774 00:34:27,805 --> 00:34:31,870 Якщо ви, хлопці, могли скинути самі в цих восьми значень. 775 00:34:31,870 --> 00:34:32,969 Відмінна робота. 776 00:34:32,969 --> 00:34:36,570 >> Давайте поглянемо в цифровому вигляді, для всього Секунду тому ми спробувати щось ще, 777 00:34:36,570 --> 00:34:38,179 на те, що тільки що відбулося. 778 00:34:38,179 --> 00:34:41,330 Тут, нагорі, ви зараз побачите візуалізація цих восьми людей 779 00:34:41,330 --> 00:34:44,719 в результаті чого синій і червоний бари представляти числа. 780 00:34:44,719 --> 00:34:46,670 Чим вища смужка, Чим більше число. 781 00:34:46,670 --> 00:34:48,510 Чим коротше бар, чим менше число. 782 00:34:48,510 --> 00:34:51,560 І те, що ви будете бачити в випадковому порядку більш восьми з них. 783 00:34:51,560 --> 00:34:55,830 Ви будете бачити ці бари отримувати відсортований за цим же алгоритмом, 784 00:34:55,830 --> 00:34:59,890 або набір інструкцій, які ми будемо називати надалі бульбашкового сортування. 785 00:34:59,890 --> 00:35:04,000 Так помітити, кожну секунду або близько того, два бари висвітлюючи червоним, 786 00:35:04,000 --> 00:35:05,590 порівнюються комп'ютером. 787 00:35:05,590 --> 00:35:08,630 І потім, якщо великий бар і невеликий бар вийшли з ладу, 788 00:35:08,630 --> 00:35:11,220 вони могли бути обмінені для мене. 789 00:35:11,220 --> 00:35:15,120 >> Тепер це неймовірно утомливо дивитися це, звичайно, 790 00:35:15,120 --> 00:35:18,630 дуже довго, але зверніть увагу, takeaway-- великі бари, рухомих вправо, 791 00:35:18,630 --> 00:35:20,460 невеликі бари рухомі вліво. 792 00:35:20,460 --> 00:35:23,380 Давайте зупинити цей процес і прискорити цей процес 793 00:35:23,380 --> 00:35:27,330 щоб бути набагато швидше, тому ми можемо отримати високого рівня почуття що, 794 00:35:27,330 --> 00:35:29,970 дійсно, бульбашкового сортування робить. 795 00:35:29,970 --> 00:35:33,150 Справді, це б'ється, щоб Права частина списку, 796 00:35:33,150 --> 00:35:35,260 або масив, тим більше барів. 797 00:35:35,260 --> 00:35:40,020 І навпаки, маленькі бари пузириться свій шлях вниз вліво, 798 00:35:40,020 --> 00:35:42,950 хоча в більш швидкому темпі ніж ми раніше зробили. 799 00:35:42,950 --> 00:35:45,850 Так, складніше побачити з людьми, але візуально це дійсно те, що 800 00:35:45,850 --> 00:35:46,540 відбувалося. 801 00:35:46,540 --> 00:35:49,110 >> Але давайте спробуємо принципово Інший підхід зараз. 802 00:35:49,110 --> 00:35:52,387 Давайте спробуємо інший Алгоритм, яким ми повинні вас 803 00:35:52,387 --> 00:35:59,640 хлопці починають в них оригінальний позиції, яка була такою порядок тут. 804 00:35:59,640 --> 00:36:00,827 І давайте йти вперед зараз. 805 00:36:00,827 --> 00:36:02,910 І я збираюся зробити те ще простіше, чи не так? 806 00:36:02,910 --> 00:36:06,710 В ретроспективі, обмін попарно раз і знову, майже трохи розумний. 807 00:36:06,710 --> 00:36:10,460 Давайте робити речі ще більш наївно, де, якщо я хочу, щоб впорядкувати ці люди, 808 00:36:10,460 --> 00:36:12,560 дозвольте мені продовжувати дивитися для найменшого елемента. 809 00:36:12,560 --> 00:36:14,570 Так прямо зараз, 4 є найменше число я бачив. 810 00:36:14,570 --> 00:36:15,695 Я буду пам'ятати це. 811 00:36:15,695 --> 00:36:17,750 Ні, 2 краще, і пам'ятайте, що. 812 00:36:17,750 --> 00:36:20,730 1 ще менше. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 Добре. 815 00:36:22,470 --> 00:36:23,750 Одно-- як тебе звуть знову? 816 00:36:23,750 --> 00:36:24,400 >> Арті: Арті. 817 00:36:24,400 --> 00:36:24,610 >> DAVID Малан: Арті. 818 00:36:24,610 --> 00:36:25,460 Так, Арті, йти вперед. 819 00:36:25,460 --> 00:36:27,043 Я збираюся витягти вас з лінії. 820 00:36:27,043 --> 00:36:28,400 Якби ви могли повернутися сюди. 821 00:36:28,400 --> 00:36:30,790 І мені потрібно, щоб звільнити місце для нього. 822 00:36:30,790 --> 00:36:32,040 У нас є точки прийняття рішення тут. 823 00:36:32,040 --> 00:36:36,000 Як ми могли б звільнити місце для Арті тут На початку, коли число 1 належить? 824 00:36:36,000 --> 00:36:36,770 >> АУДИТОРІЯ: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Малан: Добре, ми може змістити всіх. 826 00:36:38,950 --> 00:36:40,860 Але запропонувати оптимізацію. 827 00:36:40,860 --> 00:36:43,410 Це відчуває себе трохи дратує для мене, щоб запитати чотири людини 828 00:36:43,410 --> 00:36:44,620 рухатися весь шлях вниз. 829 00:36:44,620 --> 00:36:45,520 Що ще я міг зробити? 830 00:36:45,520 --> 00:36:46,360 >> АУДИТОРІЯ: Перемикач їх. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Малан: Перемикач їх. 832 00:36:46,850 --> 00:36:47,900 І те, що тебе звуть? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Яків. 834 00:36:48,441 --> 00:36:50,330 DAVID Малан: Яків, рухатися. 835 00:36:50,330 --> 00:36:54,440 Набагато більш ефективним тільки, щоб мати Місця своп Яків з Арті, 836 00:36:54,440 --> 00:36:56,710 на відміну від вимушує всі чотири з цих людей, 837 00:36:56,710 --> 00:36:58,734 велике спасибі, щоб їх правильне положення. 838 00:36:58,734 --> 00:37:01,150 Що приємно про Арті зараз, він у своїй правильній позиції. 839 00:37:01,150 --> 00:37:02,060 Давайте зробимо це знову. 840 00:37:02,060 --> 00:37:03,730 2, це найменше число, що я бачив. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 Добре. 843 00:37:06,190 --> 00:37:07,467 2, безумовно, самий маленький. 844 00:37:07,467 --> 00:37:08,550 Не потрібно робити будь-яку роботу. 845 00:37:08,550 --> 00:37:09,320 Давайте зробимо це знову. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Найменший? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Нє-а. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ох. 852 00:37:12,220 --> 00:37:13,420 Дозвольте мені згадати 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Дозвольте мені згадати 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Саме маленьке число У мене бачив на цьому проході є 3. 857 00:37:18,490 --> 00:37:20,340 Якщо ви хочете виходь. 858 00:37:20,340 --> 00:37:21,986 Куди ми йдемо, щоб поставити вас? 859 00:37:21,986 --> 00:37:22,860 І як тебе звуть? 860 00:37:22,860 --> 00:37:23,530 >> Аланна: Аланна. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Малан: Аланна, ми доведеться виселити вас. 862 00:37:25,780 --> 00:37:28,670 Але що є більш ефективним, щоб просто поміняти двох осіб, 863 00:37:28,670 --> 00:37:31,850 ніж мати кілька людей насправді обійти більш. 864 00:37:31,850 --> 00:37:32,850 Тепер давайте зробимо це знову. 865 00:37:32,850 --> 00:37:34,980 Я збираюся вибрати 4, так виходь. 866 00:37:34,980 --> 00:37:36,540 А хто буде рухатися? 867 00:37:36,540 --> 00:37:37,750 Номер 8, звичайно. 868 00:37:37,750 --> 00:37:40,260 Якщо я зараз знайти номер 5, виходь. 869 00:37:40,260 --> 00:37:42,104 Номер 8 збирається отримати знову виселяють. 870 00:37:42,104 --> 00:37:43,770 Тепер я збираюся знайти номер 6 на місці. 871 00:37:43,770 --> 00:37:44,410 7 на місці. 872 00:37:44,410 --> 00:37:45,080 8 на місці. 873 00:37:45,080 --> 00:37:48,590 >> Те, що ми тільки що зробили зараз те, що називається вибір роду, 874 00:37:48,590 --> 00:37:52,560 і якщо ми собі це, це будете почувати себе трохи по-іншому. 875 00:37:52,560 --> 00:37:56,800 Давайте підемо далі і від цього Меню тут, це visualization-- 876 00:37:56,800 --> 00:38:02,920 давайте змінимо цей to-- давай, Firefox. 877 00:38:02,920 --> 00:38:07,610 Давайте змінимо це в мій вибір роду. 878 00:38:07,610 --> 00:38:11,830 І давайте прискорити його, як і колись, і почати візуалізацію зараз. 879 00:38:11,830 --> 00:38:13,990 І цей алгоритм має інше почуття до нього. 880 00:38:13,990 --> 00:38:16,480 На кожній ітерації, чесно кажучи, це ще більш простим. 881 00:38:16,480 --> 00:38:18,385 Я просто вибравши найменший елемент. 882 00:38:18,385 --> 00:38:21,510 Тепер, чесно кажучи, я трохи пощастило, що Час, в тому, що він упорядковано дуже швидко. 883 00:38:21,510 --> 00:38:22,660 Елементи були випадковими. 884 00:38:22,660 --> 00:38:25,520 Це не так, як ми будемо в кінцевому підсумку см, принципово швидше. 885 00:38:25,520 --> 00:38:29,400 Але давайте подивимося, третій і останній підходити тут відносно того, що відбувається. 886 00:38:29,400 --> 00:38:36,230 Так що давайте йти вперед і скинути вас, хлопці востаннє, щоб бути в цьому порядку тут. 887 00:38:36,230 --> 00:38:38,450 >> А тепер, я збираюся бути трохи більш розумним, 888 00:38:38,450 --> 00:38:40,220 просто щоб закруглити наші алгоритми. 889 00:38:40,220 --> 00:38:41,230 Я збираюся зробити це. 890 00:38:41,230 --> 00:38:43,140 Я збираюся не йти назад і вперед так багато. 891 00:38:43,140 --> 00:38:44,900 Чесно кажучи, я втомився від все це переміщення. 892 00:38:44,900 --> 00:38:47,691 Я просто хочу, щоб прийняти те, що я дано на початку списку, 893 00:38:47,691 --> 00:38:49,460 і я збираюся розібратися що тоді і там. 894 00:38:49,460 --> 00:38:50,140 І ось ми. 895 00:38:50,140 --> 00:38:51,030 Номер 4. 896 00:38:51,030 --> 00:38:53,680 Я збираюся вставити номер 4 у відсортований список. 897 00:38:53,680 --> 00:38:54,180 Готово. 898 00:38:54,180 --> 00:38:58,300 Я стверджую, зараз, і просто зробити це більш ясно, ця частина мого списку сортується. 899 00:38:58,300 --> 00:39:02,610 Це свого роду дурною претензії, але насправді 4 сортується в список розмірі однієї. 900 00:39:02,610 --> 00:39:04,210 Тепер, я збираюся взяти на числа 2. 901 00:39:04,210 --> 00:39:07,670 Номер 2 я тепер збираюся вставити в потрібному місці. 902 00:39:07,670 --> 00:39:08,680 Так де ж 2 належать? 903 00:39:08,680 --> 00:39:09,824 Очевидно, тут. 904 00:39:09,824 --> 00:39:11,490 Так що вперед і повернутися, якби міг. 905 00:39:11,490 --> 00:39:14,406 І чому ви, хлопці просто взяти Ваша музика стоїть з вами на цей раз. 906 00:39:14,406 --> 00:39:17,020 А давайте насильно вставити вам на початку списку. 907 00:39:17,020 --> 00:39:17,936 Так трохи більше роботи. 908 00:39:17,936 --> 00:39:20,890 Я повинен був перемістити Якова навколо, і як тебе звуть? 909 00:39:20,890 --> 00:39:21,420 >> AMIN: Амін. 910 00:39:21,420 --> 00:39:22,270 >> DAVID Малан: Амін. 911 00:39:22,270 --> 00:39:24,350 Але принаймні я не йти вперед і назад. 912 00:39:24,350 --> 00:39:25,739 Я просто приймати речі, як я йду. 913 00:39:25,739 --> 00:39:27,530 Я просто вставляючи їх в потрібному місці. 914 00:39:27,530 --> 00:39:29,220 6, це насправді досить легко. 915 00:39:29,220 --> 00:39:31,510 Давайте вставити вам там, якщо ви просто хотів відсунутися трохи. 916 00:39:31,510 --> 00:39:32,870 Номер 8, також досить легко. 917 00:39:32,870 --> 00:39:33,741 Право там. 918 00:39:33,741 --> 00:39:34,240 Чорт візьми. 919 00:39:34,240 --> 00:39:37,590 Номер 1 ми не можемо просто поміняти з Аміном тут, 920 00:39:37,590 --> 00:39:39,340 тому що це буде зіпсувати замовлення. 921 00:39:39,340 --> 00:39:40,660 Тому ми повинні бути трохи розумніші. 922 00:39:40,660 --> 00:39:42,770 Так, Арті, якби ви могли резервне копіювання на мить. 923 00:39:42,770 --> 00:39:46,550 Давайте підемо далі і перекласти зараз, на відміну від наших попередніх алгоритмів, 924 00:39:46,550 --> 00:39:50,910 щоб звільнити місце для Арті прямо тут на початку. 925 00:39:50,910 --> 00:39:54,690 Так, в кінці кінців, я почасти робити те, що я хотів уникнути колись. 926 00:39:54,690 --> 00:39:57,770 І так мій алгоритм є свого роду з назад, інтелектуально, 927 00:39:57,770 --> 00:39:59,070 від того, що він спочатку був. 928 00:39:59,070 --> 00:40:01,240 Я просто роблю переміну в іншій точці. 929 00:40:01,240 --> 00:40:02,291 Тепер я на 3. 930 00:40:02,291 --> 00:40:02,790 О, чорт. 931 00:40:02,790 --> 00:40:04,039 Ми повинні робити більше роботи знову. 932 00:40:04,039 --> 00:40:05,060 Так що давайте штовхати вас. 933 00:40:05,060 --> 00:40:09,360 Давайте перейдемо 8, 6, 4-- про oh-- і 3 йтиме прямо там. 934 00:40:09,360 --> 00:40:11,490 Так принаймні невеликі заощадження на цей раз. 935 00:40:11,490 --> 00:40:13,100 7, не надто багато роботи належить зробити. 936 00:40:13,100 --> 00:40:15,370 Так що якщо ви хочете, щоб пхати назад, давайте вставимо вас. 937 00:40:15,370 --> 00:40:17,440 І, нарешті, 5, якщо вам хочете тріщати назад, ми 938 00:40:17,440 --> 00:40:22,610 необхідно перенести вас, вас, Ви, до п'яти на місці. 939 00:40:22,610 --> 00:40:25,670 >> Так що тепер, щоб побачити це в Високий рівень графічно, 940 00:40:25,670 --> 00:40:31,080 давайте зробимо цей алгоритм візуалізації одного додаткового часу. 941 00:40:31,080 --> 00:40:33,580 Так що це ми будемо називати вставки роду. 942 00:40:33,580 --> 00:40:37,700 Ми будемо запускати його як швидко, і почати його тут. 943 00:40:37,700 --> 00:40:39,580 І це теж має різні почуття. 944 00:40:39,580 --> 00:40:42,180 Це свого роду стає все краще і краще, але це ніколи не ідеально 945 00:40:42,180 --> 00:40:44,630 поки я не піти і гладкою в цих прогалин. 946 00:40:44,630 --> 00:40:47,860 Тому що, знову ж таки, я тільки брати те, що Я приділяється зліва направо. 947 00:40:47,860 --> 00:40:50,350 Так що я не так пощастило що все було ідеально. 948 00:40:50,350 --> 00:40:54,190 Ось чому ми повинні були це трохи mispositions що ми фіксовані в часі. 949 00:40:54,190 --> 00:40:58,890 >> Таким чином, всі ці алгоритми, здається, працювати на злегка різними темпами. 950 00:40:58,890 --> 00:41:02,030 Насправді, що б ви сказати, кращий або найшвидший на даний момент? 951 00:41:02,030 --> 00:41:03,450 Bubble роду, в першу чергу? 952 00:41:03,450 --> 00:41:05,000 Сортувати Вибір, другий? 953 00:41:05,000 --> 00:41:08,450 Внесені роду, третій? 954 00:41:08,450 --> 00:41:10,710 Я чув, деякі вибору сорту. 955 00:41:10,710 --> 00:41:13,280 Інші думки? 956 00:41:13,280 --> 00:41:16,880 >> Ось і виходить, що всі ці алгоритми 957 00:41:16,880 --> 00:41:22,400 принципово так само, як ефективно, як кожен other-- або, навпаки, як 958 00:41:22,400 --> 00:41:25,980 неефективною, так як один з одним, тому що ми можемо зробити принципово 959 00:41:25,980 --> 00:41:28,120 краще, ніж всі три з цих алгоритмів. 960 00:41:28,120 --> 00:41:29,990 І це трохи білого лежать теж. 961 00:41:29,990 --> 00:41:32,580 коли я говорю, як ефективно або неефективною, 962 00:41:32,580 --> 00:41:35,040 що, принаймні для супер-великі значення п. 963 00:41:35,040 --> 00:41:38,450 Коли у нас є всього вісім чоловік тут, або, може бути, 50 або близько того барів на екрані, 964 00:41:38,450 --> 00:41:41,645 ви абсолютно помітити відмінності Серед цих трьох алгоритмів. 965 00:41:41,645 --> 00:41:44,020 Але, як п, число людей, або кількість цифр, 966 00:41:44,020 --> 00:41:46,350 або число людей в телефоні Книга, або кількість веб-сторінок 967 00:41:46,350 --> 00:41:48,230 в базі даних компанії Google стає більше і більше, 968 00:41:48,230 --> 00:41:51,650 ми побачимо, що всі три з них алгоритми насправді дуже погано. 969 00:41:51,650 --> 00:41:54,060 І ми можемо зробити принципово краще, ніж це. 970 00:41:54,060 --> 00:41:56,830 >> Давайте поглянемо, нарешті, на те, що ці алгоритми можуть 971 00:41:56,830 --> 00:41:59,520 походити в контекст кількох інших 972 00:41:59,520 --> 00:42:03,550 а також шляхом цьому візуалізація тут 973 00:42:03,550 --> 00:42:06,860 що представлятиме нас кількість алгоритмів. 974 00:42:06,860 --> 00:42:10,330 Давайте підемо далі і привітати наші учасники тут, всі з яких 975 00:42:10,330 --> 00:42:11,690 упорядковано себе дуже добре. 976 00:42:11,690 --> 00:42:15,124 Якщо ви хотіли б взяти прощальний подарунок. 977 00:42:15,124 --> 00:42:16,540 Ви можете зберігати ваші номера, а також. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 І те, що ви побачите, або, вірніше, чути, тепер, 980 00:42:22,520 --> 00:42:25,710 є те, що, як ми ставимо звуки в кожному з цих стрижнів 981 00:42:25,710 --> 00:42:28,660 і пов'язати його з програмним забезпеченням, відрізняється частота звуку, 982 00:42:28,660 --> 00:42:33,970 Ви можете обернути свій розум більше audioly навколо того, що кожна з цих речей 983 00:42:33,970 --> 00:42:34,470 Виглядає як. 984 00:42:34,470 --> 00:42:39,325 Перший з яких є сортування вставками 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Це бульбашкового сортування. 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Сортувати Вибір. 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Те, що називається сортування злиттям. 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Гном роду. 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Ось саме для CS50. 1000 00:44:09,430 --> 00:44:13,360 Ми будемо бачити Вас в середу. 1001 00:44:13,360 --> 00:44:16,671 >> Оповідач: І тепер, "Deep Думки ", по Daven Фарнем. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Чому це для петлі? 1004 00:44:21,590 --> 00:44:23,200 Чому б не зробити його краще? 1005 00:44:23,200 --> 00:44:25,970 Я б зробити п'ять петлю. 1006 00:44:25,970 --> 00:44:28,720 >> [Сміх]