Георгий, Алла, Рита и Тимофей ужинают в ресторане. Тимофей забыл дома кошелёк. Гоша предложил за него заплатить. После ужина Георгий хочет понять, сколько нужно отдать за себя и за друга. Можно посмотреть на чек и сложить стоимость заказов Гоши и Тимофея. Но есть другие решения. Например, вычесть из общего счёта сумму заказов Аллы и Риты. Алгоритм отличается, хотя результат тот же. А теперь представьте, что ребята пришли в ресторан компанией из 30 человек. Тут уж вряд ли стоит применять второй алгоритм.
Разная последовательность действий часто приводит к одинаковому результату.
Нужно выбирать оптимальный по важным для вас критериям вариант.
Когда вы добираетесь на работу, имеют значение время, деньги, объём затраченных физических усилий. А в программировании нужно учитывать время работы алгоритма, объём используемой памяти, потраченные на реализацию программы время и деньги или другую существенную для вас метрику. При выборе решения нужно учитывать имеющиеся ресурсы.
Важно принимать во внимание, что параметры задачи могут измениться. Например, вы живёте рядом с офисом и всегда ходите на работу пешком. При переезде в другой район такой вариант действий, возможно, будет далеко не оптимальным.
Аналогично в программировании — решение может быть хорошим для одних входных данных, но при изменении параметров перестанет быть целесообразным.
Реализация алгоритмов, требуемых для решения большинства практических задач, доступна на многих языках программирования. Но чтобы выбрать оптимальное, важно понимать плюсы и минусы готовых решений. Для того, чтобы разбираться, как они устроены внутри, нужны знания алгоритмов и структур данных.
В этом курсе вы узнаете основные алгоритмы и структуры данных, применяемые в программировании. Научитесь оценивать эффективность разных вариантов решения, сравнивать их и выбирать оптимальный.