[Powered by Google Translate] [Часть 3] [менее комфортно]
>> [Nate Хардисон] [Harvard University]
>> [Это CS50.] [CS50.TV]
>> Ладно, давайте начнем.
Добро пожаловать в 4 недели CS50.
Если вы, ребята, откройте веб-браузер и открыть PSET 3,
Борьба с CS50, мы собираемся начать ходить
через участок вопросы там.
Так же, как на прошлой неделе, мы будем работать в CS50 пространства,
если вы также будете тянуть, что как вверх, так,
и если вы идете впереди и по этой ссылке, что я встал здесь на самом верху.
Пришло время начать работу.
У нас есть наша маленькая программа привет здесь. Ничего не сумасшедший.
Одна из первых вещей, которые я хочу сделать с вами, ребята сегодня идти в течение нескольких решений
к проблеме Set 1, добрый пример решений,
только так можно почувствовать, какие кода персонала пишет,
какие кодом другие студенты пишут,
А вы посмотрите на это, потому что я знаю, это странно
когда вы представить решение проблемы набора и получить комментарии
на вашей собственной версии, но иногда это полезно посмотреть, как другие люди делали это,
Особенно те, которые являются приятные глазу.
По большей части, я был действительно впечатлен решения, которые вы, ребята производства.
Я еще не начал смотреть на ваши 2s задач, но если они что-нибудь вроде первого,
это ничего не значит, но хорошие вещи.
>> Если вы посмотрите на мои изменения, давайте начнем все пути вниз по пересмотру 1,
и мы собираемся взять быстрый взгляд на решение Марио.
Если потянуть эту игру, эти программы, которые мы собираемся представить правильные.
Существовали не правильность проблем с этими проблемами, а, скорее,
Мы хотим немного рассказать о различных вопросах дизайна
, которые использовались здесь.
Одна из вещей, что было интересно о решении
том, что он использовал эту новую конструкцию, называемую фунт определить,
иногда также называют хэш определить.
Позвольте мне приблизить его здесь.
# Определяем позволяет давать имена этих цифр в вашей программе.
В этом случае максимальная высота пирамиды в Mario
было 23 и, а не положить 23 в моем коде
мы хотели бы обратиться к этому как жесткого кодирования 23 -
вместо этого дает название MAX_HEIGHT на этот номер,
так что здесь, в моем сделай то время как цикл
вы можете обратиться к MAX_HEIGHT
вместо того, чтобы число 23 дюйма
[Студент] Что такое преимущество, что делать?
Это большой вопрос.
Одним из них является читабельность.
Преимущество использования этого # определить является читабельность.
Когда я читаю этот код, я вижу, что происходит.
>> Я вижу в таком состоянии, что здесь мы тестируем
на высоту бытия <0, что мы могли бы также определены
быть минимальная высота или высота мин.
Другим преимуществом является то, что потом можно будет прочитать остальную часть линии, чтобы увидеть
, что мы также проверки, чтобы убедиться, что высота не превышает высоту не более,
потому что мы собираемся продолжать в то время как высота больше, чем высота макс.
Другим преимуществом является то, если я масштаб немного здесь-
если я запускаю эту программу и я запускаю его, скажем, с 23 прямо сейчас,
он будет печатать все 23 рядов просто так.
Но сказать, что я хотела, чтобы изменить высоту не более,
и теперь я хочу, чтобы ограничить максимальную высоту пирамиды
будет сказать только человек, который был обалденный.
# Включить , # определить MAX_HEIGHT,
и скажем, что мы хотели, чтобы установить его равным 10.
Теперь в этот момент, все, что я должен был сделать, изменить его в этом месте.
Я могу перекомпилировать код, и теперь, если я попробую и введите в 12,
она попросит меня снова.
В этом случае мы используем только MAX_HEIGHT раз.
Это не так уж хлопот, чтобы войти в
и изменить его в то время цикла, если вам нужно.
Но в программах, в которых вы ссылаетесь то же магическое число
снова и снова, это # ​​определить механизм действительно удобно
потому что вы просто изменить его один раз в верхней части файла-это правило, где вы поместите их-
и изменение просачивается через остальную часть файла.
>> Другие вещи, которые я хотел бы отметить в этом назначении, что я думал, выглядел действительно хорошим,
один был именования переменных.
Вы видите здесь, что у нас есть целые переменные называются строки и называемой высоты.
Пространства, хэши, она помогает сделать код немного более читабельным,
делает его немного более понятно, что происходит на самом деле.
Это в отличие от использования, скажем, случайных букв
или просто абракадабру в целом.
Последнее, что я укажу, что в циклы,
Часто эти переменные итератора, эти счетчики, которые вы используете в вашей циклы,
это стандартные и обычные, чтобы начать их либо я, а затем J и K
и происходит оттуда, если вам нужно больше переменных,
и это только условность.
Есть много конвенций.
Это зависит от языка программирования, который вы используете.
Но в C, мы обычно начинаем с я.
Это не имеет смысла использовать, скажем, или б
в зависимости от ситуации.
Вот именно для этого.
Если вы сейчас подтянуть Пересмотр 2, вы увидите другую Марио,
и это одна похожа на другую, что мы только что видели,
но он делает что-то круто.
Если мы посмотрим на этот раздел прямо здесь, во внутреннем цикла,
они используют некоторые сумасшедшие ищет синтаксис здесь, прямо в этой линии.
Это называется тройной оператор.
Это если другое заявление конденсируется в одной строке.
Условие этой части в скобках.
Это равносильно тому, если J <высота - I - 1.
А то, что содержание этого блока, если бы это пространство
, а затем содержание того, что еще будет есть этот #.
Это, по существу, присвоение пространства для этой переменной.
Это положив место в содержимое блока переменной,
Если это условие выполняется, и если условие не выполняется,
Затем блок переменная получает эту #.
И тогда, конечно, вместо того чтобы строить целую строку
и печать все в конце этого решения выводит ее на один символ за один раз.
Довольно прохладно.
>> Еще пару вещей, чтобы смотреть на. Мы будем переходить к жадной.
Теперь, если мы посмотрим на жадных, это первое решение
использует эти # определяет совсем немного.
У нас есть одна константа определена для каждого из различных чисел в этой программе.
У нас есть один для центов за доллар, по одной для помещений, десять центов, никель и копейки,
и теперь, если мы прокрутите вниз и прочитать код,
мы видим стандартный делать-время цикла печати все из.
Вид суть этой проблемы, понимая, что
Вы, необходимые для преобразования поплавок, который вы читаете в от пользователя к целому
точно делать математику, и это потому,
с числами с плавающей точкой, о которой мы говорили в лекции кратко,
это не возможно, чтобы точно представлять каждое значение на числовой прямой
потому, что существует бесконечно много значений между 3 и, скажем, 3,1 даже.
Вы можете иметь 3,01 и 3,001 и 3,0001, и вы можете продолжать идти.
Оказывается, всякий раз, когда вы работаете с деньгами, вы часто хотят, чтобы преобразовать его
в формате целого числа, так что вы не теряете гроши и в таком же роде.
Делая это, и округление был ключ.
Это решение использовать совершенно простой, большой алгоритм,
которая уменьшается количество оставшихся центов, сначала по кварталам,
то по десять центов, то никель, то копейки,
и добавив к числу монет каждый раз.
>> Другое решение, что мы будем видеть, как я масштаб и перейти к пересмотру 4,
были очень похожи начале, но вместо этого использовал дел и мода
Право сюда, чтобы рассчитать количество центов.
Это, число кварталов равна количеству центов разделить на 25,
и причина этого работает, потому что мы делаем целое подразделение,
так что это отбрасывание остатка.
[Студент] Есть ли у нас на комментарий поиск?
Это действительно зависит.
[Студент] Ты комментируя больше, чем код прямо здесь.
Да, и так есть куча различных философий по этому вопросу.
Моя личная философия в том, что код действительно правда,
как ваш код является то, что на самом деле выполнения на компьютере,
и так ваш код должен быть читаемым, как можно не требуют столько комментариев.
Тем не менее, когда вы делаете вещи, которые являются своего рода сложным математическим
или алгоритмически, это хорошо, чтобы комментировать те, так что вы можете
добавить дополнительное измерение, дополнительный слой к тому, кто читает ваш код.
В этих решений, часто они прокомментировали в большей степени только потому, что
Мы хотим иметь возможность распространять их и есть люди забрать их
и читать их довольно легко.
Но, безусловно, я согласен, что это тяжело.
[Студент] Но если вы сомневаетесь, идти тяжелее?
Если вы сомневаетесь, идти тяжелее.
Некоторые люди иногда говорят, 0 возвращение или что-то вроде этого.
Я думаю, что это смешно комментарий.
Очевидно, что то, что происходит.
Мне не нужен английский, чтобы сказать мне это.
Иногда люди будут писать такие вещи, как "kthxbai!"
Это мило, но и не-
это не делает разницы между комментируя точки или нет.
Такого рода комментарии только ха-ха.
Cool.
>> На данный момент, давайте начнем работать над проблемой Set 3 раздела вопросов.
Если вы, ребята тянуть это снова,
как и на прошлой неделе, мы не собираемся смотреть шорты в этом разделе.
Мы сообщим вам, ребята, что делать в свое свободное время и говорить о вопросах.
Но сейчас в этом разделе мы собираемся потратить немного больше времени,
говорить о меньшей кодирования основы
как мы это делали на прошлой неделе, и вместо этого, мы собираемся уделять больше внимания
еще немного теории, так что говорить о бинарный поиск, а затем сортировка.
С тех из вас, кто следит вместе с лекцией,
может кто-нибудь дать мне резюме, в чем разница
между бинарный поиск и линейный поиск?
Что происходит? Конечно.
Линейный поиск поиск через каждый элемент в упорядоченный список
один за другим, один за одним,
и бинарный поиск делит список на 2 группы,
проверяет, имеет ли ключи, которые вы ищете, больше или меньше, чем середина значения
что вы только что обнаружили, и если он меньше, он идет с меньшим списком
и затем делит это снова, делает ту же функцию,
весь путь вниз, пока не найдет середину, чтобы быть равным значению себя.
Право.
>> Зачем нам это нужно?
Почему мы говорим о бинарного поиска по сравнению с линейным поиском?
Да.
Двоичные намного быстрее, так что если вы удвоить размер проблемы
он делает еще один шаг, а не в два раза больше.
Именно так.
Это отличный ответ.
Линейный поиск очень проверки одного элемента за один раз,
и, как мы видели в первый день лекций
, когда пошел Давид своим примером телефонной книге
и вырвал одну страницу из телефонной книги в то время,
и продолжали делать это снова и снова и снова,
он собирается взять его действительно много времени, чтобы найти никого в телефонной книге,
если, конечно, он искал кого-то в самом начале алфавита.
С бинарный поиск, вы можете пойти гораздо быстрее,
и это не только в два раза быстрее или 3 раза быстрее, или в 4 раза быстрее.
Но проблема становится все меньше и меньше и меньше гораздо быстрее.
Чтобы проиллюстрировать это, мы начнем говорить о том, что происходит
когда мы пишем бинарный поиск.
Проблема в руке, что если у меня есть массив чисел,
скажем, 1, 2, 3, 5, 7, 23, 45, 78, 12323,
, а затем 9 с тонной 0s после него,
Мы хотим быть в состоянии выяснить, действительно быстро, что находится в
это массив чисел.
Я знаю, это кажется немного глупым и немного надуманный,
потому что сейчас она есть.
У нас есть массив, который не очень много элементов в нем,
и если я попрошу одного из вас, чтобы выяснить действительно ли
23 находится в массиве, вы можете сделать это довольно быстро
просто взглянув на этом и говорил мне: да или нет.
Аналоговых, чтобы рассмотреть является представьте себе, если бы это было, скажем,
таблицами Excel с 10000 строк, 20.000 строк.
Конечно, вы можете сделать F команда или управления F и искать что-то.
Вы также можете использовать фильтры и поиск материала,
но если у вас просматривать этот файл строка за строкой за строкой,
это займет у вас много времени, чтобы найти его.
Это вроде как в примере телефонной книги, тоже, где
никто не смотрит в одну страницу телефонной книги на время.
Как правило, они его открыть к середине,
или, в случае большого количества телефонных книг и словарей, где
Вы на самом деле это ключ на первую букву,
Вы щелкаете на что первое письмо и открыть и начать ходить через него.
>> Напомните мне ваше имя. >> Сэм.
Сэм.
Как Сэм сказал, что линейный процесс поиска будет очень медленным,
, а вместо этого с бинарный поиск, как это работает так, что
каждый раз, когда мы проходим через итерация нашего алгоритма поиска,
мы собираемся разделить список в два раза, по существу,
на две меньшие списки.
И тогда на следующей итерации цикла, мы делим его снова
в других небольших списков.
Как вы можете видеть, проблема становится все меньше и меньше
потому что соблюдаем отбрасывая половину списка каждый раз.
Как это выбросить работы?
Так же, как напоминание, что мы собираемся делать, если мы были компьютеров
и мы были, скажем, ищет номер 5 в этом списке
является то, что мы хотели бы выбрать номер в середине.
В середине этого списка, потому что есть 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 числа,
Мы бы выбрать номер либо на 4-й позиции или на 5-й позиции,
и мы называем это середине нашего списка.
Выберите номер в середину.
Тогда, как сказал Сэм, мы проверим, чтобы увидеть, если это число равно
на номер, который мы хотим получить или наш нужный номер.
Если он равен, то мы нашли его. Мы победим.
Если это не равны, то есть несколько случаев.
Два случая либо число должно быть больше, чем количество, мы смотрим на,
или это меньше, чем.
Если она больше, мы двигаемся вправо.
И если он меньше, мы движемся влево.
И тогда мы повторить весь процесс заново
либо на правой половине или в левой половине списка.
>> Первая проблема в раздел сегодня в том, чтобы выяснить,
как мы можем реально начать, чтобы выразить это в код C.
У нас есть псевдокод здесь.
То, что мы начнем делать это я буду тянуть до совершенно новое пространство,
сохранить этот пересмотр, так что у нас есть эти заметки на потом,
мы удалим все это, а затем скопируйте и вставьте с проблемой набора
эту информацию в наших пространствах, и, надеюсь, это не нарушает.
Perfect.
Если вы, ребята, все это сделать, скопируйте и вставьте этот код в новое пространство,
в пустую.
Давайте попробуем Даниэль. Если скомпилировать и запустить эту программу, она работает?
Номер >> Что он говорит?
Он говорит, что контроль достигает конца непустое функции.
Да, так что позвольте мне попробовать запустить его.
Разве вы, ребята, видели этого раньше? Знаете ли вы, что это значит?
Хорошо, давайте проанализируем это немного.
Он говорил на file.c на линии 9, столбец 1 мы имеем ошибку, так же, как вы сказали,
и он говорит, что он, вытекающих из предупреждения об ошибках и предупреждения возвращаемого типа.
Похоже, что-то происходит с возвращением типа, который имеет смысл.
У нас есть непустое функция, которая означает, что у нас есть функция
, которая не возвращает пустоту.
Пустоту функция является тот, который выглядит следующим образом:
недействительными Foo (), и это пустота, потому что возвращаемый тип является недействительным,
Это означает, что если у нас что-то здесь
как возвращение 1, мы получим ошибку компиляции для этого.
Тем не менее, у нас есть непустое функции.
Наши непустое функции в этом случае наша функция поиска
потому что она имеет возвращаемого типа BOOL.
Когда он говорит, что контроль достигает конца непустое функции,
это потому, что поиск не имеет возвращаемого заявлении.
Это не возвращается ничего типа BOOL.
>> Мы можем исправить это, и что вы думаете, ребята
Поиск должен вернуть по умолчанию?
Каким должно быть значение по умолчанию возвращение поиска?
Потому что это то, что мы можем поставить в конце.
Шарлотта, есть ли у вас-?
Правда или ложь? >> Истинным или ложным.
Какой?
False. Я не знаю.
Ложь? Давайте попробуем.
Почему бы вам сказать возвращение ложным? Это отличная интуиция.
[Charlotte] я не знаю.
Мы собираемся вернуться ложным в этом случае, потому что это будет нашим умолчанию
Если по каким-то причинам этот список пуст или иглой
что мы ищем не существует.
Затем в самом конце, если мы не вернемся истинной ранее в этой функции,
Мы всегда знаем, что эта функция будет сказать Нет, это не в массиве.
Это не в стоге сена.
Теперь, если мы скомпилировать и запустить его, позвольте мне сохранить это таким образом мы можем потяните его вверх.
Теперь, если мы скомпилировать и запустить нашу программу, он строит.
Мы получаем наш маленький строке.
Если бы я ударил 4-ох-ох.
Это не напечатать что-нибудь. Похоже, что все закончилось хорошо.
Мы должны заполнить эту дюйма
Мы говорили о алгоритм в псевдокоде немного назад.
Давайте посмотрим, кроме этого,
и я буду тянуть, что алгоритм назад снова.
Давайте ударил этого парня. Нет.
Там она есть.
Как мы это делаем?
Что бы быть хорошей стратегией для трогании с этим кодом?
Вы должны выбрать число в середине.
Как мы выбираем число в середине массива?
Любые предложения?
[Студент] STRLEN разделить на 2.
STRLEN разделить на 2. Это один большой.
STRLEN работы с особыми видами массивов.
Какие виды массивов?
Струнный массивы, массивы символов.
Это что такое же понятие, что мы хотим применять,
но мы не можем использовать StrLen, потому что мы не имеем массив символов.
У нас есть массив целых чисел.
Но что StrLen получить для нас?
Вы знаете, что это становится для нас?
[Студент] STRLEN заставляет нас длины.
Именно он заставляет нас длины.
STRLEN получает длину массива для нас.
>> Как мы можем получить, что в нашей программе бинарного поиска?
Как бы вы получить длину массива?
[Студент] STRLEN?
Вы можете получить длину правильно отформатировать массив строк C с StrLen.
Проблема, однако, в том, что мы не имеем массив строк.
Если мы посмотрим на этот код, мы должны это массив целых чисел.
Как мы знаем, как долго это?
[Студент] Есть эквивалентно одному для конечной точки, как Int L или что-то?
Оказывается, там на самом деле нет, и это таким образом, это
одна из тех вещей, которые просто хорошо знать о C,
что нет никакого способа, чтобы получить длину массива
если все, что я вам это массив.
Причиной он работает со строками, причина StrLen работ,
потому что если строка правильно отформатировать,
он будет иметь, что специальные \ 0 символ в самом конце.
>> Вы также можете представить, если у вас неправильно отформатированных строк
и нет \ 0 символ есть, то все это не работает.
[Студент] Вы можете добавить \ 0?
Мы могли бы в этом случае.
Мы могли бы добавить какую-то \ 0
или какой-то означающий символ, а затем использовать его.
Но это не совсем будет работать
потому что \ 0 для символьного типа,
и здесь у нас есть целые.
Другое дело, если бы мы использовали особую ценность
как -1, чтобы отметить конец массива
Затем мы никогда не могли бы хранить -1 в нашем целыми массивами.
Мы застряли.
Получается, что единственный способ получить длину
массива в C является на самом деле помню
когда вы установите его, а затем передавать его с массивом
так что всякий раз, когда у меня есть функция, которая будет делать некоторую работу
на массив целых чисел или поплавками или удваивается или что там у вас,
Мне также нужно дать функцией длины массива,
и это именно то, что мы сделали здесь, в функции поиска.
Если вы посмотрите, что мы сделали, когда мы переходим в нашем массиве здесь,
Мы также проходят в длину, размер.
Просто так получилось, что мы назвали эту переменную здесь,
этот параметр или аргумент.
Это называется аргументом функции списка или списка параметров,
и они также называются аргументами или параметрами.
Люди используют разные термины в разное время.
Я иногда поменять их на себе.
Просто так случилось, что эта переменная здесь называют аналогично
к этому # определить здесь.
Но они не то же самое.
Капитализация имеет значение.
>> Если вы посмотрите на то, что здесь происходит, мы заявляем,
наши Int массива, который мы назвали цифры.
Мы дали это наш размер, который соответствует нашему # определить наверху.
Это будет 8.
А потом, когда мы потом называем нашу функцию поиска внизу,
мы переходим в число мы хотим найти, который мы запросе
получили от пользователя.
Мы проходим в массиве, это числа,
и тогда мы также должны пройти в размер массива,
и то значение размер 8 получает хранится
или передается в это число переменной размера.
У нас есть размер массива.
Теперь, если мы вернемся к тому, о котором мы говорили ранее,
Я думаю, Missy воспитывается такой степени, что то, что мы должны сделать, это получить длину массива
и разделите его на 2, и что даст нам точку.
Давайте посмотрим.
Могу ли я кого-нибудь написать этот документ и сохранить его в своем пространстве?
Как насчет Лейлы?
Могу ли я вам пишу это в?
Написать первую строку, где вы берете длину массива и получить середина
и хранить его в новую переменную.
Я дам вам пару секунд. Готовы ли вы?
[Студент неразборчиво]
Конечно, я мог вам рассчитать среднюю точку
в стоге сена массива внутри функции поиска
использованием длины стоге сена массив, который является размер переменной?
Ничего хитрого.
[Лейла] Так же размера / 2 и просто-
И сохранить его, и нажмите на кнопку Save здесь на вершине,
и мы потяните его вверх.
Perfect.
Там мы идем. Awesome.
>> Как, будет ли это скомпилировать?
[Лейла] Нет, она должна быть выше.
[Nate] Да, так что же нам нужно сделать?
[Лейла] Как Int середине или что-то.
Awesome. Да, давайте сделаем это, внутр середину = размер.
Будет ли это скомпилировать?
Давайте удалить этот комментарий и получить его в сторону.
То, что не будет собирать по этому поводу?
Мы ничего не делаем с целым,
поэтому нам нужно распечатать его или что-то вроде этого.
Да, именно так.
Мы получим неиспользованных переменных.
Что еще не будет работать по этому поводу?
Я думаю, что вы сказали что-то, Сэм. Точка с запятой.
Да, я пропускаю эти точки с запятой.
Это будет постоянная вещь в течение всего срока.
Последнее, что я буду делать, я положу некоторые пробелы по обе стороны
этого оператора здесь, так как это обычно как мы это делаем
в соответствии с нашим стилем руководства.
У нас есть середина нашего массива.
Теперь, если мы помним, вернемся к нашему алгоритму,
что был второй шаг, который мы должны были сделать, когда у нас середина?
[Студент] Если это больше [неразборчиво].
Да, так что мы должны делать какие-то сравнения, и что мы здесь сравнение?
Вы сказали, что если она больше. Что в этом предложении речь?
Число, которое появляется, если это больше, чем середина, а затем подняться на массив?
Именно, поэтому количество, которое появляется, когда мы-
Иглы, так что мы по сравнению с иглой,
и что мы сравнению с иглы?
Поскольку игла является то, что мы ищем.
Мы сравнивая его, чтобы добраться до центра.
>> Но это имеет смысл, чтобы проверить,
если середина иглы =?
Имеет ли это смысл?
Кто-нибудь не согласен?
Давайте попробуем, если (середина иглы ==).
[Студент] Printf ли вы его нашли.
[Nate] Е ("Мы обнаружили, что \ п");
В противном случае, я собираюсь начать делать что-то другое здесь.
Я собираюсь начать собирать в фигурные скобки, если заявления все время
просто потому, что если мы добавим больше материала, то
мы не получаем компиляторов.
Да, Сэм. У вас есть точка.
Проблема в том, что середина представляет собой позиции в массиве,
но вы можете получить его для представления значения в этой позиции массива.
Это большая точка.
А все слышали, что сказал Сэм?
Он сказал, что середина как
представляет собой лишь позиции в массиве, но это не фактический элемент в массиве.
Если вы думаете о коде, как написано прямо сейчас,
если мы посмотрим на этот массив сюда, которое имеет 8 элементов в нем,
, что является значением середины собирается быть в этой функции?
[Студент] 4.
[Nate] 4.
Если мы посмотрим на число 4 -
и мы можем только запустить этот код и положить немного грустное лицо здесь
потому что мы не нашли его, если мы запустим этот код
как это прямо сейчас, загрузив его, строительные, позвольте мне прокрутите вниз,
и если мы посмотрим на число 4,
Мы нашли его, но мы не получить эту Printf да.
Одной из причин является то, что мы не вернулись правда,
но мы действительно найти номер 4?
И Сэм говорит, нет.
Что же мы видим?
Мы действительно нашли середину, которая, если мы посмотрим на массиве сюда,
это будет элемент с индексом 4, что мы смотрим на,
, что на 23.
>> Как мы на самом деле получаем, что элемент в середине
и не только середина себя?
[Студент] Мы хотели бы ввести символ или что-то?
Что бы это сделать, просто из любопытства?
Вы можете остановиться немного подробнее?
Вы должны преобразовать позицию в номер,
так что вы должны сделать некоторые связи, я думаю, что это символ, но оно не может быть.
Да, это хороший момент.
Мы делаем много такого преобразования позиции в символы, эти символы,
В первых двух наборов проблемы.
Оказывается, что здесь, это почти похоже на
доступ к го символа в строке, если это имеет смысл.
Здесь мы хотим получить доступ к середине элемента.
Как мы это делаем?
Кевин, у вас есть какие-либо предложения, как мы могли бы это сделать?
Вы можете сделать стог сена, открытая скобка, средние, закрытые кронштейн.
Можете ли вы написать, что для нас?
Сохраните его сюда, и мы будем тянуть, что вверх.
Мы смотрим на эту строку 9,
и мы, понимая, что мы не хотим, чтобы сравнить иглу в середине,
но вместо этого, мы хотим сравнить иглы
на элемент в позиции середины в нашем стоге сена массива.
Cool.
Там мы идем.
Да, это выглядит довольно хорошо, если (игла == стоге сена [середина]).
Мы нашли его.
Теперь, если мы запустим код-Мы резервную копию немного-
он собирает, она работает, и теперь, если мы посмотрим на 4,
мы не нашли, потому что сейчас мы на самом деле получить число 23.
Мы получаем значение 23, и это то, что мы по сравнению с нашими иглы.
Но это хорошо. Это шаг в правильном направлении.
>> Именно это мы и пытаемся сделать.
Мы не пытаемся сравнивать иглу против позиции в массиве
а против фактического элементов в массиве.
Если мы оглянемся назад, сейчас снова на следующем шаге в нашем алгоритме,
какой следующий шаг?
Лейла уже упоминали это вкратце.
[Студент] Проверьте, если оно больше или меньше, а затем решить, в какую сторону двигаться.
[Nate] Да, так, как бы нам это сделать?
Можете ли вы поставить в некоторых-я сохранить этот пересмотр,
а затем, если вы положите в несколько строк, которые будут это делать.
Да, Шарлотта. >> У меня есть вопрос.
Разве не должно быть середина - 1, потому что первым делом
это 0 проиндексированы, поэтому, если мы ставим 4, что на самом деле не характер, что мы ищем?
Да и других проблем с этим представляет-
это большой улов, потому что то, что будет в конечном итоге происходит возможно
если мы будем двигаться и мы никогда не отрегулировать изначально?
Я думаю, что мы могли бы в конечном итоге делают пытается получить доступ к
Элемент на 8-й позиции массива,
которые в данном случае не существует.
Мы хотим сделать какой-то учет тот факт,
что у нас есть нуль индексации.
[Charlotte] Извините, я имел в виду середина - 1 в квадратных скобках.
Мы можем сделать это.
Мы вернемся к этому вопросу чуть позже.
Как только мы начинаем, чтобы добраться до фактического цикла,
вот тогда мы действительно видим это вступает в игру.
В настоящее время, мы можем это сделать, но вы совершенно правы.
Это нулю индексация будет иметь эффект, который мы должны учитывать.
Давайте посмотрим.
>> Как больше и меньше чем?
[Студент] я получаю, как сделать больше и меньше, чем часть.
Я просто не был уверен, что печатать, если вы обнаружите, что это меньше, чем стоге сена середине или больше.
Здесь я могу спасти то, что ДИСК-
[Nate] Да, если вы сохраните то, что у вас есть, и мы будем потяните его вверх.
Там мы идем.
[Студент] И я ставлю вопросительный знак, что я не знал.
[Nate] Это выглядит здорово.
Здесь у нас есть знаки вопроса, потому что мы еще не знаем,
то, что мы собираемся сделать еще достаточно.
Что мы хотим сделать-ой, у нас есть некоторые скобки все фанки на нас.
Мы исправим эти скобки.
Там мы идем.
И то, что мы хотим сделать, по нашему алгоритму,
если мы не найдем иглу?
Скажем в случае, если игла меньше, чем то, что мы смотрим. Кевин.
Только посмотрите на левую половину.
Право, таким образом, мы поставим комментарий здесь, который говорит «посмотрите на левую половину".
И если игла больше стог сена в середине, что мы хотим сделать?
[Студент] Тогда вы посмотрите на правую половину.
Посмотрите на правую половину ", посмотрите на правую половину".
Не так уж и плохо.
Итак, на данный момент, все выглядит довольно хорошо.
Проблема с кодом, как написано это что?
[Студент] У вас нет конечных точек для половины.
Да, у нас нет конечных точек для половины.
Мы только собираемся пройти через это один раз.
Мы только собираемся смотреть друг на середину.
Любой элемент есть, или ее нет.
Для того чтобы завершить это, мы должны будем сделать какой-то повторения.
Нам нужно повторять до тех пор пока мы видим, что
либо элемент находится там, потому что мы сузили и, наконец, нашел его,
или его там нет, потому что мы смотрели через все вещи,
в соответствующих половинах массива и обнаружил, что нет ничего там.
>> Всякий раз, когда мы получили это повторение происходит, что мы будем использовать?
[Студент] цикл.
Какая-то цикла. Да.
[Студент] Можем ли мы делать-пока петля и он это сделать и то при
игла не равно-я не уверен, где я собираюсь с этим.
Но вроде как это сделать, пока она не равна значению, пользовательский ввод.
Да, так что давайте посмотрим, как это могло бы написать сам?
Вы сказали, что давайте использовать DO-цикла.
Где сделать старт?
[Студент] Сразу после размера / 2.
[Nate] Хорошо, и что же мы будем делать?
Мы заполнить позже.
Что мы будем делать?
[Студент] Не мы хотим сделать все то, что мы имеем в случае часть?
[Nate] Нравится ли все эти вещи, здорово.
Копирование и вставка.
О, Боже.
Давайте посмотрим, если это работает, если мы можем вкладки над этим.
Красивая.
Хорошо, и мы сохраняем это так, вы, ребята, есть.
Все в порядке, и мы собираемся делать это в то время,
то, что было при условии, что вы были после?
[Студент] В то время как игла не равны, так как восклицательный знак.
Но я не уверен точно, что это такое еще.
[Nate] Да, это один из способов сделать это.
Сэм, у вас есть комментарии?
[Сэм] я вспомнил, когда я смотрел на видео,
Я взял скриншот одного из подобных, когда мы делали псевдокод для него,
была некоторая связь между макс и мин.
Я думаю, что это было что-то вроде, если Макс все меньше мин.
Есть.
[Сэм] Или как если бы Макс не меньше, чем мин или что-то вроде этого,
потому что это будет означать, что вы искали все.
>> Да, так что же это звучит как максимальный и минимальный имели в виду?
[Сэм] Значения, которые, целые числа, которые собираются изменить
относительно того, где мы ставим точку.
Именно так.
[Сэм] В этот момент он собирается [неразборчиво] вычислить макс и мин.
Середина это максимальный и минимальный идея.
Имеет ли это смысл для людей?
Если бы мы были, чтобы начать смотреть на то, как мы собираемся это сделать итерацию,
Вы совершенно правы, что мы хотим использовать какие-то делать, в то время как петля.
Но я думаю, если мы вспомним, что происходит на месте этого массива
и то, что происходит на самом деле, я собираюсь писать здесь-
на самой первой итерации бинарный поиск, имеем-
Я собираюсь использовать б и е для обозначения начала.
А потом в конце нашего массива.
Мы знаем, что начало на 4 прямо здесь,
и мы знаем, что конец на 108.
Скажем, мы ищем число 15.
Первый раз, когда мы делаем это, как мы видели ранее,
середина либо будет 16 или 23
в зависимости от того, как мы вычислим вещи.
С равномерного деления в середине даст нам это пространство
между 16 и 23, мы не можем разделить его поровну
или разделить его и получить на истинную середину.
Мы будем смотреть на 16.
Мы понимаем, "Эй, 16> 15, которые мы ищем".
Чтобы затем посмотрите на левую половину массива
то, что мы в конечном итоге делает, отбрасывая
это вся верхняя часть
и говорит: "Хорошо, теперь наша конечная точка будет здесь".
Следующая итерация нашего цикла, мы теперь, глядя на этот массив,
эффективно отбросив эту часть, потому что теперь
если мы берем середину, чтобы быть разница между началом и концом,
мы находим нашу середину, чтобы быть 8,
которые мы можем проверить 8 чтобы увидеть, где он находится в зависимости от числа мы ищем,
15, находим, что 15 больше,
таким образом, мы должны двигаться к правой части списка,
которых мы знаем, потому что мы люди, и мы можем увидеть его.
Мы знаем, что правая часть собирается быть там, где мы его находим,
но компьютер не знает, что, таким образом, что мы будем делать это мы будем на самом деле
было это пойти, и теперь в начале и в конце
находятся на том же месте, так что середина становится единственным номером в списке в тот момент,
, что на 15, и мы нашли его.
Значит ли это, пролить свет на котором все это максимальный и минимальный обозначение идет,
отслеживание конечных точек массива для того, чтобы выяснить,
как сузить вещи вниз?
>> Что бы произошло, если бы это было не равным 15 сейчас?
Что делать, если мы искали 15 и, вместо этого, это число было также 16?
Мы бы сказали: "О, это больше.
Мы хотим вернуться к левым ".
И мы бы двигать нашу электронную вправо,
в этот момент у нас есть конечная точка, которая была бы противоречивыми.
Он не смог бы найти больше элементов
потому что теперь у нас есть конечная точка и наша начальная точка,
Макс наших и наших мин, сейчас переворачивается.
Мы поиска по всему массиву. Мы не можем ничего найти.
Это точка, в которой мы хотели бы сказать: "Хорошо, мы собираемся, чтобы остановить этот алгоритм.
Мы ничего не нашли. Мы знаем, что это не здесь ".
Как это происходит?
[Студент] Как именно компьютер переключения конца?
Как в конце конечном итоге перед началом?
В конце концов перед началом
в связи с математикой, что мы собираемся делать каждый раз, когда мы делаем это.
То, как мы поменяться, если вы посмотрите на самый первый раз мы это делаем своп
где у нас начало в 4 и в конце
на всем пути вниз на 108 и наши середина, скажем, в 16 -
Я собираюсь сбросить это обратно в 15-если мы ищем 15,
Мы знали, что то, что мы сделали, когда мы проверили 16 и увидел, что это было больше,
и хотел отбросить всю правую часть списка,
Мы увидели, что то, что мы хотели сделать, это перейти эту электронную прямо здесь.
По сути, электронный были перемещены в один до середины.
Аналогичным образом, когда мы сделали это итерации алгоритма
и середина была на 8,
мы обнаружили, что 8 <15, поэтому мы хотели, чтобы переместить б
следующий за середину.
Теперь, в начале и в конце оба вместе в этом 15.
>> Если бы мы происходили искать какие-то другие ценности, а не 15,
или, если это 15 вместо этого было 16,
мы бы обнаружили, что электронная мы хотим, чтобы переместить один до середины.
Сейчас в электронной бы там перевернулся меньше, чем б.
Давайте рассмотрим, как мы на самом деле в конечном итоге этот алгоритм кодирования.
Мы знаем, что мы хотим, чтобы эта середина расчет.
Мы также знаем, что мы хотим, чтобы отслеживать начало и конец массива
наши текущего массива, чтобы мы могли понять,
где эта левой половине списка, а где правая половина списка.
Мы делаем это либо начало и конец,
или мы можем называть их минимальный и максимальный.
Я буду использовать начинаются и заканчиваются на этот раз.
Когда мы начинаем, если мы оглянемся на нашем примере здесь,
наши начале был установлен в самом начале массива, как естественный.
Что индекса это было? Какой должна быть наша начать?
Даниил.
[Даниил] Haystack [0].
[Nate] Да, чтобы мы могли установить его равным стоге сена [0].
Проблема, однако, в том, что это дает нам не позиция первого элемента.
Это дает нам индекс первого элемента или фактическое значение в этой первой позиции.
[Студент], который будет конвертировать в 0,20?
[Nate] Что это будет сделать, это, ну, он не будет делать любые преобразования.
Что он будет делать это он будет хранить 4 в начать,
и тогда это будет трудно сделать сравнения с начала
потому что Бегин будет проводить значение 4,
, который является началом нашего массива,
но мы хотим, чтобы отслеживать индексы в массиве
в отличие от значений.
Мы на самом деле использовать 0, как этот.
На конец массива Шарлотта принесла этом чуть раньше.
Это то, где мы будем принимать во внимание нуля индексации.
>> Шарлотта, что к концу массива?
Что такое индекс конца?
[Charlotte] Размер - 1.
Да, и размер которой мы должны использовать?
Должны ли мы использовать размеру капитала или строчная размер?
Капитал размером.
В этом случае мы могли бы использовать размеру капитала.
Если мы хотим эту функцию, чтобы быть портативными
и использовать эту функцию в других программах,
мы действительно можем использовать строчные размера.
Это тоже хорошо.
Но Шарлотта совершенно правильно, что мы хотим иметь размер - 1.
На данный момент-
[Студент] Как получилось, что вы можете использовать заглавные размер?
Как получается, что мы могли бы использовать заглавные размер?
Оказывается, что эти # определяет, действительно,
под капотом, текст, как найти и заменить, если это имеет смысл.
При компиляции кода этапе предварительной обработки
составителя проходит через файл,
и он ищет везде, что вы написали размеру капитала,
и он заменяет, что текст буквально с 8, как и что.
В этом смысле, это очень отличается от переменной.
Это не займет никакого места в памяти.
Это простой трюк замена текста.
В этом случае, мы собираемся использовать размер.
Отсюда мы хотим сделать своего рода повторение,
и мы на правильном пути с нашим DO-цикла.
Мы хотим сделать что-то, пока условие не выполнено больше,
и, как мы видели ранее, мы увидели, что это условие
действительно, что мы не хотим конца
быть меньше, чем начинаться.
>> Это наша остановка состоянии.
Если это произойдет, мы хотим, чтобы остановиться и объявить, как: "Эй, мы не нашли ничего".
Чтобы выразить это, мы хотим использовать какой-то цикл.
В этом случае, было бы сделай то время как цикл, цикл, в то время как цикл?
У нас есть сделай то время как цикл здесь.
Вы, ребята, как этот подход?
Как вы думаете, мы должны попробовать другой подход?
Кевин, какие мысли?
Мы могли бы какое-то время цикла, потому что мы знаем, максимальная
будет больше, чем мин в начале любом случае.
Да, так что нет инициализации, что должно произойти.
Те, сделай то время как петли здорово, когда у вас есть что-то для инициализации
до этого тестирования, а здесь
Мы знаем, что мы не собираемся держать повторной инициализации как начинать и заканчивать
каждый раунд цикла.
Мы знаем, что мы хотим инициализировать их, а затем проверить наше состояние.
В этом случае, я на самом деле пойти с простой цикл время.
Оказывается, что делать, в то время как петли используются довольно редко.
Много места даже не учат делать во время циклов.
Они хороши для обработки пользовательского ввода, таким образом, мы видели, многие из них до сих пор.
Но нормально и пока петли гораздо больше общего.
Оказывается, что это условие, как написано
Не будет действительно нам очень хорошо, и почему это?
Мне очень жаль, я не знаю вашего имени.
Я Джерри. >> Простите?
Это Б-О-Р-У-I.
Ну, ладно.
Я не вижу тебя в моем списке.
Ах, это потому, что-о-о, это имеет смысл.
У вас есть представление о том, почему это пока петля не может работать, как задумано,
как написано с условием?
[Jerry] Вы имеете в виду, как вы хотите, чтобы все вещи после того, как в-?
Да, так вот один.
Мы могли бы положить все эти вещи в то время как цикл, что является абсолютно верно.
Другое дело, что это немного более проблематично, однако, является то, что это условие не работает.
[Студент] Вам нужно перевернуть его.
Право, таким образом, это условие никогда не будет истинным первоначально, как мы говорили об этом.
Мы хотим сделать что-то до конца <начаться,
но мы хотим сделать что-то в то время как
начать ≤ конца.
>> Там в обращении, что логики нет.
Я виновен делать тех ошибок, все время.
[Студент] Почему это должны быть меньше или равны?
Потому что вы помните случай, когда мы добрались до
где был только один элемент, и мы были внизу,
и мы искали как раз в 15 в нашем массиве?
И наше начало и конец наш был того же элемента.
Мы хотим, чтобы убедиться, что мы работаем в этом случае.
Если бы мы сделали прямую менее,
Мы бы только быть в состоянии получить до 2-элемент массива.
Как только мы добрались до последнего элемента, что, если бы это было наше элемент, мы никогда не найти его.
Теперь вот, мы можем сделать так же, как вы говорили.
Мы можем начать plopping вещи прямо в середину нашего цикла.
Мы можем хлопнуть в нашей середине.
Мы можем взять все это, если заявления,
вытащить их из этого сделай то время как цикл,
хлопнуть их,
очистить вещи немного,
и я буду идти вперед и сохранить этот пересмотр.
И в этот момент, мы получаем довольно близко.
Сэм.
Я думаю, вы также должны иметь Int середину = размер - 1/2.
Понял, размер - 1/2.
Есть ли что-нибудь еще нам нужно изменить в этой линии?
Это был хороший улов.
>> Что же размера делать? Неужели мы постоянно меняется размер?
Для того, чтобы держать линию, как это, мы должны изменить размер.
Мы должны изменить размер каждый раз, когда мы идем вокруг цикла.
Но помните, когда мы шли через наш пример лишь немного выше,
и у нас было начало на 4
и в конце все пути на 108?
Как мы вычислим среднюю точку?
Если бы мы, используя размер?
Или мы использовали начинаются и заканчиваются, а?
Это разница между концом и началом.
Вот именно, и как именно я должен написать, что Шарлотта?
Просто конец - начало.
Вам не нужно будет делать - 1
потому что - 1 была включена в конце концов, и начинаются уже.
[Nate] Отлично, вы совершенно правы.
Мы не должны делать - 1, потому что это - 1 были включены
и составила при инициализации в конце переменной.
>> Есть ли что-нибудь еще мне нужно сделать, синтаксически, чтобы эта линия имеет смысла?
[Студент] Plus начать. >> Plus начать?
[Студент] в конце.
Потому что он рассчитывается только на половину длины.
Вам нужно добавить начаться.
[Nate] Что бы это вычислить для нас?
Если мы думаем о конце на этой самой первой итерации,
Конец будет в позиции индекса 7.
Начало находится в положении 0.
Помните, что мы ищем либо
положение 3 или позиции 4.
Если мы посмотрим на эту математику, просто чтобы сделать его немного более ощутимым,
поставить некоторые номера здесь, у нас есть 7, 0,
так 7 - 0, а затем / 2
составляет 3 в целочисленное деление, то есть.
Тогда нам нужно, чтобы затем добавить туда наш начать?
Мы не в этом случае.
На самой первой итерации, то это будет прекрасно, потому что Бегин 0.
Но, как мы прогресс, мы делаем действительно все, просто нужно
конец - начать / 2.
Там еще одна хитрость, и это именно одна из приоритет.
[Студент] Нужно ли нам скобки?
[Nate] Точно, и это потому, что если мы не будем ставить эти скобки,
Затем эта строка будет интерпретироваться, а
как (конец) - (начало / 2), который мы определенно не хотим.
Следите за тем, правила приоритета.
[Студент] Почему она не закончится + начать?
Почему она не закончится + начать?
[Студент] Почему это не так?
Почему бы это было +?
Я думаю, что вы правы.
[Студент] Потому что это средняя?
[Nate] End + начать, вы совершенно правы.
Ничего себе, я полностью goofed. Вы правы.
Если бы мы делали минус, мы хотели бы добавить начинать масштаб
В этом случае, вы очень правильно, что мы хотим взять среднее из двух,
поэтому мы хотим, чтобы добавить их, в отличие от вычесть их.
[Студент] Он также будет работать, если вы сделали конца - начинать / 2 + начаться.
Он бы, если бы мы, я так считаю.
>> Например, если мы смотрим на начала,
и мы переместили его сюда
к 15.
Теперь начинается в позиции 2.
Последняя находится в положении 7.
Если вычесть их, мы получим 5.
Разделите это на 2, получаем 2.
И тогда мы добавляем 2 обратно,
и что получает нас на 4-й позиции,
который находится прямо здесь, которое является серединой.
[Студент] Нужно ли нам, чтобы заботиться о обертывания?
В каком смысле мы должны заботиться о обертывания?
Если сумма или разница между
в зависимости от того, как мы делаем это не четное число.
Затем компьютер запутается ли, когда это 2,5;
Вы двигаться влево или вправо, чтобы определить, что является середина?
Есть.
Оказывается, что с целочисленное деление,
Мы никогда не получим эти числа с плавающей точкой.
Мы никогда не получим десятичную.
Это полностью отбрасываются.
Если у вас есть компьютер разделить два Int переменные,
и одна 7, а другой 2,
Вы не будете получать 3.5 в качестве результата.
Он будет получать 3.
Остальные будут отброшены, так что это эффективно округления
Не круглая, а скорее полу, если вы, ребята, знакомы с этим в математике,
где вы полностью отказаться от десятичной,
и так вы, по сути обрыва вниз до ближайшего
Всего позиций, до ближайшего целого числа.
[Студент] Но тогда это проблематично, потому что если у вас есть массив из 7 элементов
Затем, что автоматически делает 3-й элемент из середины, а не 4-й.
Что нам делать с этим?
Это проблематично, потому что если бы мы имели массив 7,
было бы выбрать 3-й, а не 4-й.
Могли бы вы объяснить немного больше?
[Студент] Потому что, если у вас есть 7 элементов, то 4-й элемент
будет середина, верно?
Помните, Ваше мнение о том нуля индексируется, хотя.
[Студент] Да, так и в положении 3. Это будет середина.
Да.
Ну, ладно. Я понимаю, что вы имеете в виду.
Это немного странно, так как мы привыкаем к этому само понятие
избавиться от знаков после запятой.
Это большая точка.
Давайте закончим это.
Мы рассчитана наша середина.
>> Мы тестирования, чтобы увидеть, если наши иглы равна средней стоимости.
Мы печатаем, что мы его нашли, но на самом деле, то, что мы хотим сделать в этой ситуации?
Мы обнаружили, поэтому мы хотим, чтобы вызывающая знаем, что мы его нашли.
У нас есть функция, которая это логическое типизированные функции.
То, как мы сигнализировать об этом вызывающей наши функции, которые мы готовы пойти
это мы говорим: "Эй, это правда".
Как бы мы это сделаем, Кевин?
Вы кивая головой. >> [Кевин] Добавить возвращения правда.
[Nate] Точно, вернуть истинный.
Теперь, если это не равны, как бы мы посмотрим на левую половину?
Любые идеи?
Стелла, какие идеи?
Вам необходимо установить новую позицию конца.
Да.
Таким образом, мы должны сделать положение середина - конец.
Великий.
Нам необходимо создать новые позиции на конец
смотреть на левую половину.
Это было то, что мы говорили раньше, где
Я продолжаю возвращаться к этому примеру.
Я начинаются здесь, а то у меня в конце все пути сюда.
>> Опять же, если мы смотрим на 15, и наша середина находится на 16,
и мы понимаем, "Oops, 16 больше.
Мы хотим, чтобы перейти к левой половине ".
Мы бы затем переместите конец 15,
и мы делаем, что, взяв в сторону от средней точки
и установка, что наши новые конца.
Точно так же, если мы хотим, чтобы смотреть на правую половину, как бы мы это делаем?
У Вас есть идея?
[Студент] Вы только что установили начинают мидпойнте + 1.
[Nate] Великий.
И теперь в случае, если мы не найдем ничего,
ничего, что получить позаботились для нас?
Даниэль, не получите, что позаботились о нас?
[Даниил] Нет
[Nate] Если мы сделаем это через весь массив, и мы ничего не найдем,
где бы, что будут заботиться, или мы должны заботиться о нем?
[Даниил] в то время как состояние.
[Nate] Да, в то время как состояние, точно.
Она будет заботиться о проходящие через весь массив, если мы ничего не найдем.
Это в то время как цикл завершится.
Мы никогда не сталкивались с этим условием,
и мы можем вернуться ложным.
Мы также можем оставить это, если здесь, как это
потому что, если это, если утверждение верно,
и наша функция будет возвращать,
и таким образом мы существенно отмены этой функции в этой точке
Когда мы вернемся правда.
Но что происходит с этой структурой здесь?
Будет ли это работать совсем, или есть логический изъян там?
>> Существует некоторый логический изъян в наличии, с тем, как он настроен.
Что может быть?
[Студент] Зачем вам нужен - и + 1с?
Это отличает наш массив, чтобы быть наша новая левая половина и правая половина.
[Студент] Но почему ты не мог сделать это без - 1 и + 1с?
[Nate] Мы могли бы установить его равным середина?
Что может быть проблематичным по этому поводу?
[Студент] Я думаю, это неэффективно, поскольку вы проверяете значение, которые уже проверены.
[Nate] Точно, так что Сэм совершенно правы.
Если вы установите конца и начать равно середина
вместо - 1, + 1 задумчиво,
в какой-то момент в будущем мы закончим проверку середину снова.
[Студент] Я начал PSET, а затем у меня было что-то вроде этого
где я забыл + 1, и оно застряло в бесконечном цикле.
Правильно, потому что в какой-то момент вы никогда не собираюсь начинать и заканчивать
на самом деле пересекаются.
Cool.
Там еще один логический изъян, и что, что это обязательно должен быть
еще, если.
Почему это может быть?
>> Причина в том, если это не еще, если-ты видел это, Кевин?
[Кевин] Да, потому что вы изменения конечной точки.
[Nate] Именно так.
Мы меняем конечной точки,
и если оно написано, как это сделать-Мы пространства между-
она будет проверять этот случай.
Этот случай, если это удастся, прервет из функции.
Тогда она будет проверять следующем случае,
и если это удастся, он будет регулировать конечную точку,
а затем он будет продолжать и проверить этот случай.
Но на данный момент, мы не хотим, чтобы продолжить проверку.
К счастью, мы не сбрасывается середины здесь,
и мы знаем, что это дело не удастся.
Но мы определенно хотим положить еще, если там
хотя, что может быть в данном случае
так как мы не подстраиваясь середину, которая бы изменить ситуацию?
Нет, потому что эти случаи являются исключительными.
Опять же, мой плохой.
Мы не, я думаю, нужно это еще, если.
Мы можем дать ему попробовать и запустить его и посмотреть, что происходит.
Строительство, произошла ошибка.
Это, наверное, потому что я оставил эти б в и е в здесь.
Есть ли у меня больше тех, наверху?
Это не похоже на это.
Мы масштаб, строительство,
там она идет, так что теперь, если мы ищем 15,
Да.
Позвольте мне изменить масштаб изображения
15, да. Мы можем запустить его снова.
Загрузка исходного кода, строительство, работает.
Мы можем искать что-то вроде 13,
и мы ничего не получаем распечатку, так что это не находя, что для нас.
Это здорово, потому что это не в нашем списке.
>> Сейчас мы находимся вне времени.
Это будет его на этой неделе.
Спасибо, что присоединились, и увидимся.
>> [CS50.TV]