Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и жить проще - [18]

Шрифт
Интервал


Недавнее упоминание о «высокой вероятности» подводит нас к важной теме и одновременно сути этой главы. Прежде мы мимоходом упоминали о «худших случаях» и «средних случаях» для разных алгоритмов. Эти существенные показатели позволяют спрогнозировать, сколько времени уйдет у определенного алгоритма на перебор всего ряда элементов.

Время осуществления алгоритма зависит от многих условий. Например, в коде мы можем столкнуться с присутствием логических ветвей (если это не ваш случай, то пропустите этот абзац). Исходя из того, какой путь выбран, время пробега может варьироваться. Хороший пример – быстрая сортировка, которая упомянута в главе 5. При быстрой сортировке разделение начинается в первую очередь с выбора опорного элемента. Этот элемент используется для разделения массива данных на две группы: в одной содержатся элементы меньше опорного, в другой – больше него. Когда опорный элемент выбирается наугад, быстрая сортировка в среднем случае проходит в логарифмическом времени. Если опорный элемент слишком велик или слишком мал, быстрая сортировка может идти в квадратичном времени в худшем случае. Это изменение в производительности происходит из-за того, что опорный элемент не справляется с разделением массива элементов на каждом этапе, и приходится проверять почти каждый элемент на каждом из тех этапов, которые, как мы видели в ранних главах, являются атрибутами квадратичного алгоритма.

Анализ быстрой сортировки показывает, что алгоритм имеет высокую вероятность прохождения в линейно-логарифмическом времени. Мы знаем, что нужно сделать, чтобы достичь этого, – убедиться, что опорный элемент не является самым верхним или самым нижним в массиве. Таким образом элемент с усредненным значением применим практически для всех случаев и может гарантировать, что быстрая сортировка пройдет в линейно-логарифмическом времени.

Но иногда вероятной гарантии все же недостаточно. Если наш алгоритм работает с таким приложением, как управление космическим шаттлом, или представляет угрозу для чьей-то жизни, регулирует работу инфузионного насоса или дефибриллятора, то показатель наихудшего случая будет нас сильно беспокоить. Классификация потенциального результата полезна и в других приложениях, применимых в повседневной жизни.

Для Терри средний случай линейно-логарифмического времени более чем предпочтителен, хотя поиск по его алгоритму в худшем случае будет проходить в квадратичном времени. Сейчас ему не о чем волноваться. Пока у него достаточно книжных разделителей, он успевает в кино вовремя.

12

В супермаркете

Вурзма Моне до недавнего времени работал менеджером в фонде управления инвестиционными бумагами. Непостижимое решение стать рэпером возникло у него после того, как он прочитал в одной из школ лекцию о страховке кредиторов от дефолта. Беседа прошла под лозунгом «Кем работает мой отец», и к полудню Вурзма решил вести более осмысленную жизнь. Он ходит в местный супермаркет каждые две недели и часто ловит себя на том, что бродит по проходам из одного конца в другой в поисках нужных ему вещей из списка покупок. Туда-сюда, туда-сюда – у него уходит целая вечность на покупки. Визит в магазин еще больше затягивается из-за странной походки Вурзмы, которая мало походит на «крутую пацанскую» и больше напоминает ребят, которые своим видом будто говорят: «Я пропустил очередную консультацию у психотерапевта». Другие рэперы сразу замечают это несоответствие, и хрупкое доверие к Вурзме со стороны уличной продвинутой молодежи еще больше слабеет. Ему надо перестать выглядеть идиотом и избавиться от мыслей, обрекающих его на смехотворное существование.

Вурзма находится на перепутье. Но у нас хорошая новость: похоже, мы знаем, как ему помочь, и в этой главе рассмотрим варианты, о которых уже говорили в предыдущих главах. Есть два способа, которые Вурзма может использовать, бродя по супермаркету в поисках продуктов из списка.

ЦЕЛЬ: СВЕСТИ К МИНИМУМУ КОЛИЧЕСТВО РЯДОВ, ПО КОТОРЫМ НУЖНО ПРОЙТИ.

МЕТОД 1: ПРОСМОТРЕТЬ ВЕСЬ СПИСОК ПОКУПОК ПО ПУНКТАМ.

МЕТОД 2: ПОДГОТОВИТЬ СПИСОК ЗАРАНЕЕ, ЧТОБЫ ВСЕ БЫЛО РАЗЛОЖЕНО ПО КАТЕГОРИЯМ. ПРОСМАТРИВАТЬ ОДНУ КАТЕГОРИЮ ЗА ДРУГОЙ, СОВЕРШАЯ ПОКУПКИ.

Я положу свой массив в твой массив, чтоб ты не стартовал, не спросив

До сих пор мы говорили о массивах как о фундаментальной структуре, предназначенной для хранения набора элементов. В главе 6 мы ввели еще одну полезную структуру под названием матрица, которая также нужна для хранения групп элементов. Но здесь они сохраняются в двух измерениях, а не в одном. Что общего у этих двух структур? А то, что массив может быть преобразован в матрицу. Все, что нужно для этого сделать, – вместо сохранения литер (как, например, цифра, буква или слово) в каждом расположении сохранить массив. Массив массивов называется двумерным, или в более общем виде многомерным массивом.

Многомерные массивы позволяют нам с Вурзмой сделать одну полезную вещь – сохранить список покупок в двух измерениях, что позволит нашему герою двигаться по любому подмассиву в зависимости от отдела, в котором он сейчас находится.


Рекомендуем почитать
Отцы, матери, дети. Православное воспитание и современный мир

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Биоритмы, или Как стать счастливым

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Зверская самка

Как перестать быть одинокой, стервозной сучкой и найти олигарха своей мечты! Методичка для женщин на каждый день.


Осторожно: дети! Или пособие для родителей, способных удивляться

– Уж я-то своего ребенка знаю хорошо. Мой на дурное не способен, мы его в строгости растили и в честности. Никогда без разрешения не возьмет, ничего без спросу не сделает. Помню, совсем маленький был, соседка спрашивает: "Сашенька, можно я тебя поцелую?". Он к бабушке побежал, спрашивать.– Правильно, пороть надо, если слов не понимают. Вот мой отец, чуть что, за ремень – так я человеком вырос, до сих пор его уроки помню.– Ну что вы?! Ребенок должен расти в тепле, уюте, баловать надо детей, успеют своего хлебнуть.


Любовь для умных мужчин

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Описательная психология

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Стань себе родителем: как исцелить своего внутреннего ребенка и по-настоящему полюбить себя

Если каждая встреча с родственниками заканчивается ссорами, а болезненные воспоминания из детства все никак не отпускают – оставьте попытки изменить окружающих. Лучше исцелите своего внутреннего ребенка! Книга Йена Кана Чжена поможет вам разобраться в том, что родители не смогли дать вам в прошлом. Научитесь преодолевать конфликты и жить в мире со своей семьей и другими людьми.


Рестарт. Как вырваться из «дня сурка» и начать жить

Порой наша жизнь начинает напоминать «день сурка», вновь и вновь проигрывающий все тот же сценарий «дом–работа–дом». Если вы устали каждый день проводить без смысла и радости, делать то, что вам совсем не хочется, эта книга для вас! По мнению Татьяны Ананьевой, признанного эксперта в области HR и маркетинга, консультанта ведущих компаний страны, в основе счастливой и гармоничной жизни лежит принцип осознанности и четкое понимание своих желаний. В легкой и доступной форме она рассказывает, как научиться управлять своей жизнью и обрести внутренний баланс и равновесие, стать счастливее в работе и в жизни. Из этой книги вы узнаете: [ul]Как найти свою мечту и реализовать ее; Почему нам так трудно избавиться от шаблонов и что с этим делать; Как научиться делать шаг к цели каждый день; Чем отличается подход к работе у разных поколений; Как избежать типичных ошибок в планировании.[/ul].


Синдром самозванца. Как перестать обесценивать свои успехи и постоянно доказывать себе и другим, что ты достоин

Синдром самозванца – относительно новое, но весьма распространенное явление, которому подвержены как молодые, так и пожилые мужчины и женщины, всемирно известные личности, карьеристы и обычные люди, считающие себя плохими партнерами, родителями или друзьями. К сожалению, все мы в тот или иной период времени перестаем верить в собственные силы и компетентность, что, в свою очередь, сказывается на нашей учебе, работе или отношениях. Эта книга – первый шаг в борьбе с низкой самооценкой. Представленные в ней результаты научных исследований, тесты и примеры из психологической практики помогут осознать причины неуверенности в себе, а конкретные методики и эффективные советы позволят избавиться от нее навсегда.


Предназначение. Найти дело жизни и реализовать свои мечты

У каждого есть Предназначение. Не следовать ему – самое большое преступление. Отсутствие четкого понимания своего пути делает людей несчастными и бедными. Александр Рей – практикующий психолог и просто счастливый человек. Он написал книгу-тренинг «Предназначение» для того, чтобы без пустых теорий и рассуждений помочь вам осознать свою миссию и немедленно приступить к ее осуществлению.