Алгоритмы и структуры данных
Информация - сведение, независимое от типов данных. Информация бывает аналоговой и цифровой.
Данные - сведение для вывода, решения
Алгоритмы – это конечный набор инструкций на определенном языке, который описывает последовательность выполнимых и определенных шагов для решения задачи. Они применимы к разным входным данным
1) Конечность: Алгоритм всегда должен завершаться после выполнения конечного числа шагов. Это означает, что он не бесконечно продолжается, а имеет четкую точку завершения.
2) Определенность: Каждый шаг алгоритма должен быть четко определен и иметь однозначное значение. Это означает, что действия, которые нужно выполнить, не могут иметь двусмысленных интерпретаций.
3) Ввод: Алгоритм имеет некоторое число входных данных, которые задаются до начала его работы или динамически определяются во время выполнения. Простыми словами, алгоритму нужно знать, с чем он будет работать.
4) Вывод: У алгоритма есть одно или несколько выходных данных, которые связаны с входными данными.
5) Эффективность: Эффективность алгоритма определяется тем, насколько простыми являются его операторы. Если мы можем точно выполнить эти операторы с помощью карандаша и бумаги в течение ограниченного времени, то алгоритм считается эффективным.
Псевдокод — это способ описания алгоритмов и структур данных с использованием естественного языка и элементов программирования. Он позволяет выразить основные идеи без деталей реализации. Проще говоря, это “черновик” для программы, который помогает программистам понять, как решить задачу, не вдаваясь в код.
- Выражения: Используйте арифметические операции, чтобы вычислить значения.
- Объявления метода: Определите функции или методы для выполнения конкретных задач.
- Структура принятия решений: Используйте условные операторы (if-else) для выбора разных путей в зависимости от условий.
- Циклы: Используйте циклы (например, for или while) для повторения действий.
- Индексирование массива: Обращайтесь к элементам массива по индексу.
- Обращения к методам: Вызывайте методы объектов для выполнения определенных действий.
- Возвращаемое значение метода: Убедитесь, что ваши методы возвращают нужные значения.
Давайте подробнее разберемся с алгоритмом нахождения наибольшего общего делителя (НОД) для двух натуральных чисел N и M.
- Инициализация: Пусть P будет минимальным из чисел N и M. Это позволяет сократить диапазон поиска общих делителей.
- Инициализация t: Устанавливаем t равным 1. Начальное значение НОД.
- Проверка P: Если P равно 1, переходим к шагу 5. В противном случае переходим к шагу 4.
- Поиск делителей:Задаем i последовательностью всех целых чисел от 2 до P.
- По возрастанию проверяем каждое i:Если M делится на i без остатка (M % i == 0) и N делится на i без остатка (N % i == 0), то обновляем t: t = i. Это означает, что i является общим делителем для N и M.
- Завершение алгоритма: Результатом НОД будет значение t.
Пример: Пусть N = 12 и M = 18.
- P = min(12, 18) = 12.
- t = 1 (начальное значение).
- Проверяем i от 2 до 12:i = 2: 12 % 2 == 0 и 18 % 2 == 0, обновляем t: t = 2.
- i = 3: 12 % 3 == 0 и 18 % 3 == 0, обновляем t: t = 3.
- i = 4: 12 % 4 == 0 и 18 % 4 != 0 (не делится на 4).
- …
- i = 12: 12 % 12 == 0 и 18 % 12 == 0, обновляем t: t = 12.
- НОД(12, 18) = 6 (так как 6 - наибольший общий делитель).
Этот алгоритм помогает найти наибольший общий делитель двух чисел, используя поиск общих делителей и выбор наибольшего из них.