Метод оптимизации 2: интуитивный подход
Когда вы впервые (до знакомства с бинарным поиском) услышали о задаче поиска элемента в отсортированном массиве, вам вряд ли пришло в голову, что целевой массив нужно сравнить с серединой, а затем рекурсивно обработать подходящую половину.
Но если выдать человеку, не разбирающемуся в теории алгоритмов, упорядоченную по алфавиту стопку студенческих рефератов, он с большой вероятностью реализует некий аналог бинарного поиска. «Питер Смит? Пожалуй, это где-то в нижней части стопки». Он выберет случайный реферат в середине (или неподалеку от нее), сравнит имя с искомым, а затем продолжит действовать так с оставшейся частью рефератов. Ничего не зная о бинарном поиске, он интуитивно понимает его суть.
Наш мозг странно устроен. Стоит произнести фразу «Спроектируйте алгоритм», и многие люди впадают в ступор. Но если дать реальный пример — данные (например, массив) или их аналог из реального мира (стопка рефератов), как интуиция немедленно выдает вполне достойный алгоритм.
Я сталкивалась с этим явлением у многих кандидатов. Их компьютерные алгоритмы работают медленно, но стоит предложить решить задачу вручную, как они немедленно изобретают нечто быстрое (и это понятно: кому же захочется нагружать себя лишней работой?).
Итак, попробуйте решить сложную задачу на интуитивном уровне с реальными данными. Часто это оказывается проще сделать с большим примером.