КурсыИИМатематикаКодФизикаО проекте и вопросы

TwiddleLab / Код / Как думает программист

Быстрый поиск

Урок 8 из 10 · 7 мин · Бесплатно, без аккаунта

Что ты узнаешь

  • Двоичный поиск проверяет середину отсортированного списка и выбрасывает половину, где ответа быть не может.
  • Каждая проверка делит пополам то, что осталось, поэтому для 100 элементов хватит 7 проверок, а для миллиарда 30.
  • mid = (low + high) // 2: // делит и отбрасывает остаток. % даёт сам остаток.

Начать урок

Как идёт урок

  1. Загадано число от 1 до 100.

    После каждой догадки звучит «больше» или «меньше». За сколько догадок его всегда можно найти?

  2. Игра: 100 дверей, одно сокровище. Уложись в 7.

    Нажми на дверь. Датчик робота говорит «левее» или «правее», и ненужная половина гаснет.

  3. Два робота ищут дверь 73.

    Запусти обоих и нажми на робота, которого отправишь в следующий раз.

  4. У деления пополам есть имя и строка кода.

    Двоичный поиск находит что-то в отсортированном списке: проверяет середину и выбрасывает половину, где этого быть не может.

    Каждая проверка делит пополам остаток: 100, 50, 25, 13, 7, 4, 2, 1. Это 7 проверок.

    Индекс середины mid = (low + high) // 2. // делит и отбрасывает остаток: 14 // 2 это 7, и 15 // 2 тоже 7.

    % даёт этот остаток: 15 % 2 это 1. Смотри, как работают оба.

  5. Поиск это ты. Двигай заборы.

    Жёлтая карточка это mid. Перетаскивай low или high на нужную карточку, пока не найдёшь 70.

  6. Один шаг двоичного поиска в коде.

    Пройди по шагам. Смотри, какой забор двигается.

  7. Видео глючит в один момент из 64 минут.

    Каждая проверка включает середину и спрашивает: глюк уже был? Сколько проверок нужно, чтобы сузить до 1 минуты?

  8. Сколько догадок всегда хватит для числа от 1 до 1000?

  9. low = 0, high = 15. Какую карточку поиск проверит первой?

    Нажми на неё.

  10. Как далеко заходит деление пополам?

    Растяни размер списка до миллиарда.

Предыдущий урок: Сортировка по одному обмену · Следующий урок: Функции: дай рецепту имя · Часть курса: Как думает программист

Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.

Loading TwiddleLab