Вы находитесь на странице: 1из 6

Алгоритмы и структуры данных

(часть 1)

Алгоритм – это формально описанная вычислительная процедура,


получающая исходные данные (input), называемые также входом алгоритма
или его аргументом, и выдающая результат вычисления на выход (output).
Структура данных – программная единица, позволяющая хранить и
обрабатывать множество однотипных или логический данных.
Типичные операции:
 Добавление данных
 Изменение данных
 Удаление данных
 Поиск данных

Базовые алгоритмы с массивами:


 Стандартные – это доступ к элементу массива по индексу, изменение
элементов, линейный и бинарный поиск
 Сортировка массива
Базовые структуры данных:
 Динамический массив
 Однонаправленный и двунаправленный список
 Стек
 Дек
 Очередь
 Очередь с приоритетом
 Двоичная куча
Структура данных типа дерево:

Виды структуры данных типа дерево:


 Двоичное дерево (алгоритм обхода дерева в ширину и в глубину)
 Дерево поиска
 Дерево отрезков
 B-дерево
Где используются алгоритмы?
Алгоритмы используются в областях:
 Вычислительная геометрия
 Теория игр
 Полиномы
 Матрицы
 Решение уравнений
Эффективность алгоритма определяется различными характеристиками и
зависит от исходных данных:
 Время работы
 Объемом дополнительной памяти
 Количеством операций сравнения
 Количеством обращения к диску и тд
Числа Фибоначчи - элементы числовой последовательности 1, 1, 2, 3, 5, 8,
13, 21, 34, ... в которой каждое последующее число равно сумме двух
предыдущих чисел.
Пример программы на JS:

Let one и let two – это переменные. В данном примере мы присваиваем им


значения 1 и 0. Let current – это переменная куда мы помещаем сумму
переменных one и two. Переменная i – это счетчик. Console.log служит для
вывода (подробнее синтаксис мы изучим на отдельных блоках по
программированию).
Как проверить, является ли заданной натуральное число простым?
Можно быстро определить, делится ли одно натуральное число на другое,
проверив остаток от деления

Будем перебирать все числа от 1 до √𝑛, проверяя, делит ли какое-нибудь из


них n.
Пример программы на JS:

Let n =10 - это переменная, она означает что мы берем 10 чисел. NextPrime
нам нужно, чтобы возвращать следующее число. В данном примере мы
проверяем делится ли число с остатком или без. Если без остатка –
выводим его с помощью alert (подробнее синтаксис мы изучим на отдельных
блоках по программированию).

Массив – набор однотипных компонентов (элементов), расположенных в


памяти непосредственно друг за другом, доступ к которым совершается по
индексу (индексам). Традиционно индексирование элементов начинается с 0.
Размерность массива – количество индексов, необходимое для однозначного
доступа к элементу массива.
Пример одномерного массива целых чисел:
Как задать массив? (Пример на разных языках программирования)

Для того, чтобы быстрее массив обрабатывался его можно переместить в


функцию. Для передачи массива в функцию можно передать указатель на
начало массива и колчество элентов.

Пример программы на JS:

Var someArray = […] – это массив. В квадратных скобках мы видим


значения массива. Function нужно для того, чтобы задавать функцию.
Arr.Lenght – вычисляет длину массива. Alert – вывод (подробнее синтаксис
мы изучим на отдельных блоках по программированию).
Как проверить, есть ли заданный элемент в массиве?
Нужно последовательно проверить все элементы массива, пока не найдем
заданный элемент, либо пока не закончится массив.
Пример программы на JS:

Elem – заданный элемент, который мы сравниваем с каждым элементов


нашего массива. Arr.Lenght – вычисляет длину массива. Return – повторить.
True и False – правда и неправда выполнения нашего условия (подробнее
синтаксис мы изучим на отдельных блоках по программированию).