Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_SiAOD_2021.docx
Скачиваний:
110
Добавлен:
01.04.2022
Размер:
5 Mб
Скачать
  1. Классы сложности алгоритмов.

Сложность алгоритмов - это количественная оценка ресурсов, затрачиваемых алгоритмом, обычно оценивают по времени выполнения или по используемой памяти. В обоих случаях сложность зависит от размеров входных данных.

Базовые нотации:

Тета-большое = n, т.е. мы знаем, что программа будет выполняться точно за какое-то кол-во времени(кол-во операций) для конкретного объема данных. (Золотой стандарт, стремимся к этому)

О-большое <=n, т.е. наша программа выполнится за n секунд или раньше. Удобно, что знаем верхнюю оценку времени, при которой мы знаем, что больше уже ТОЧНО не будет.

Амега >=n, т.е. означает, что мы знаем минимальное время выполнения моего алгоритма.

Возрастающая типов (порядков) сложности:

Если вложены: сложности перемножаются

Если два алгоритма подряд: сложность того, что больше

  1. Структуры данных. Массив

Массив - структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона.

Массив – это структура данных с фиксированным и упорядоченным набором однотипных элементов (компонентов). Доступ к какому-либо из элементов массива осуществляется по имени и номеру (индексу) этого элемента. Количество индексов определяет размерность массива. Так, например, чаще всего встречаются одномерные (вектора) и двумерные (матрицы) массивы. Первые имеют один индекс, вторые – два.

Массивы, описанного типа называются статическими, но существуют также массивы по определенным признакам отличные от них: динамические и гетерогенные. Динамичность первых характеризуется непостоянностью размера, т. е. по мере выполнения программы размер динамического массива может изменяться. Такая функция делает работу с данными более гибкой, но при этом приходится жертвовать быстродействием, да и сам процесс усложняется.

Обязательный критерий статического массива, как было сказано, это однородность данных, единовременно хранящихся в нем. Когда же данное условие не выполняется, то массив является гетерогенным. Его использование обусловлено недостатками, которые имеются в предыдущем виде, но оно оправдано во многих случаях.

  1. Структуры данных. Связный список.

Свя́зный спи́сок — базовая динамическая структура данных в информатике, состоящая из узлов, каждый из которых содержит как собственно данные, так и одну или две ссылки («связки») на следующий и/или предыдущий узел списка.

Список – абстрактный тип данных, реализующий упорядоченный набор значений. Списки отличаются от массивов тем, что доступ к их элементам осуществляется последовательно, в то время как массивы – структура данных произвольного доступа.

Список (связный список) – это структура данных, представляющая собой конечное множество упорядоченных элементов, связанных друг с другом посредствам указателей. Каждый элемент структуры содержит поле с какой-либо информацией, а также указатель на следующий элемент. В отличие от массива, к элементам списка нет произвольного доступа.

Односвязный список

В односвязном списке, приведенным выше, начальным элементом является Head list (голова списка [произвольное наименование]), а все остальное называется хвостом. Хвост списка составляют элементы, разделенные на две части: информационную (поле info) и указательную (поле next). В последнем элементе вместо указателя, содержится признак конца списка – nil.

Односвязный список не слишком удобен, т. к. из одной точки есть возможность попасть лишь в следующую точку, двигаясь тем самым в конец. Когда кроме указателя на следующий элемент есть указатель и на предыдущий, то такой список называется двусвязным.