--- comments: true --- # 1.2 Что такое алгоритм ## 1.2.1 Определение алгоритма Алгоритм (algorithm) - это набор инструкций или шагов, предназначенных для решения конкретной задачи за ограниченное время. Он обладает следующими свойствами. - Задача четко определена и включает ясные определения входных и выходных данных. - Обладает осуществимостью и может быть выполнен за ограниченное количество шагов, времени и памяти. - Каждый шаг имеет определенное значение, и при одинаковых входных данных и условиях выполнения результат всегда будет одинаковым. ## 1.2.2 Определение структуры данных Структура данных (data structure) - это способ организации и хранения данных, включающий содержимое данных, их взаимосвязи и методы операций с ними. Структура данных преследует следующие цели. - Минимизировать занимаемое пространство для экономии памяти компьютера. - Обеспечивать максимально быструю обработку данных, включая доступ, добавление, удаление и обновление данных. - Обеспечивать простое представление данных и логическую информацию для эффективного выполнения алгоритмов. **Проектирование структуры данных - это процесс, полный компромиссов**. Если вы хотите улучшить один аспект, часто приходится идти на уступки в другом. Приведем два примера. - Связный список, по сравнению с массивом, более удобен для добавления и удаления данных, но имеет проблемы со скоростью доступа к данным. - Граф, по сравнению со связным списком, предоставляет более богатую логическую информацию, но требует большего объема памяти. ## 1.2.3 Связь между структурами данных и алгоритмами Как показано на рисунке 1-4, структуры данных и алгоритмы тесно взаимосвязаны, что проявляется в следующих трех аспектах. - Структуры данных являются основой алгоритмов. Они обеспечивают структурированное хранение данных и методы их обработки. - Алгоритмы оживляют структуры данных. Сами по себе структуры данных лишь хранят информацию, но в сочетании с алгоритмами они позволяют решать конкретные задачи. - Алгоритмы можно реализовать на основе различных структур данных, однако эффективность их выполнения может значительно различаться, поэтому выбор подходящей структуры данных является ключевым фактором. { class="animation-figure" }
Рисунок 1-4 Связь между структурами данных и алгоритмами
Структуры данных и алгоритмы подобны конструктору, как показано на рисунке 1-5. Комплект конструктора, помимо множества деталей, содержит также подробную инструкцию по сборке. Следуя этой инструкции шаг за шагом, можно собрать красивую модель. { class="animation-figure" }Рисунок 1-5 Сборка конструктора
Подробное описание аналогии с конструктором представлено в таблице 1-1.Таблица 1-1 Сравнение структур данных и алгоритмов с конструктором