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