При каждом складывании количество прямоугольников увеличивается вдвое, так что 16 прямоугольников строятся за 4 шага. Как записать время выполнения этого алгоритма? Напишите время выполнения обоих алгоритмов, прежде чем двигаться дальше.
«O-большое» определяет время выполнения в худшем случае
Предположим, вы используете простой поиск для поиска фамилии в телефонной книге. Вы знаете, что простой поиск выполняется за время
Простой поиск все равно выполняется за время
примечание
Наряду с временем худшего случая также полезно учитывать среднее время выполнения. Тема худшего и среднего времени выполнения обсуждается в главе 4.
Типичные примеры «O-большого»
Ниже перечислены пять разновидностей «O-большого», которые будут встречаться вам особенно часто, в порядке убывания скорости выполнения:
Предположим, вы снова строите сетку из 16 квадратов, и вы можете выбрать для решения этой задачи один из 5 алгоритмов. При использовании первого алгоритма сетка будет построена за время
Второй алгоритм работает медленнее: за время
Ниже показано, сколько времени потребуется для построения сетки с остальными алгоритмами, от самого быстрого до самого медленного:
Существуют и другие варианты времени выполнения, но эти пять встречаются чаще всего.
Помните, что эта запись является упрощением. На практике «O-большое» не удается легко преобразовать в количество операций с такой точностью, но пока нам хватит и этого. Мы еще вернемся к «O-большому» в главе 4, после рассмотрения еще нескольких алгоритмов. А пока перечислим основные результаты:
• Скорость алгоритмов измеряется не в секундах, а в темпе роста количества операций.
• По сути формула описывает, насколько быстро возрастает время выполнения алгоритма с увеличением размера входных данных.
• Время выполнения алгоритмов выражается как «O-большое».
• Время выполнения
Упражнения
Приведите время выполнения «O-большое» для каждого из следующих сценариев.
1.3 Известна фамилия, нужно найти номер в телефонной книге.
1.4 Известен номер, нужно найти фамилию в телефонной книге. (Подсказка: вам придется провести поиск по всей книге!)
1.5 Нужно прочитать телефоны всех людей в телефонной книге.
1.6 Нужно прочитать телефоны всех людей, фамилии которых начинаются с буквы «А». (Вопрос с подвохом! В нем задействованы концепции, которые более подробно рассматриваются в главе 4. Прочитайте ответ — скорее всего, он вас удивит!)
Задача о коммивояжере