Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к экзамену по программированию в 1 семест....doc
Скачиваний:
26
Добавлен:
22.04.2019
Размер:
576 Кб
Скачать

58. Объединения (union). Битовые поля.

Объединением называется область памяти, использующаяся для хранения данных разных типов. Причем одновременно в объединении могут храниться данные только одного определенного типа. Данные входящие в объединение называются его полями (элементами). Тип описывающий объединение также называется объединением.

С помощью объединения к одной и той же области памяти можно обращаться как к данным различного типа. Объединение можно рассматривать как структуру, все элементы которой имеют одинаковый начальный адрес в памяти. Длина объединения определяется наибольшей из длин полей объединения. Объединения позволяют сэкономить память в том случае, если необходимо хранить только один из элементов объединения, но заранее неизвестно, какой именно. Синтаксис объединений аналогичен синтаксису структур.  union [имя_типа_объединения] { тип_1 элемент_1; тип_2 элемент_2; … тип_n элемент_n; } Битовые поля   Поля битов – это особый тип полей структуры. Они используются, если нужно запомнить данные, для которых необходима ячейка памяти менее одного байта. Это могут быть, например, флажки, которым достаточно одного бита для представления значений в двоичной логике. Битовыми полями называются элементы структуры или объединения, которые определяются как последовательность битов. Синтаксис описания битового поля следующий:  Идентификатор_типа [имя_поля]: ширина_поля;

59. Понятие сложности алгоритма. Оценка сложности с использованием о-символики.

10.1. Оценка алгоритмов Для большинства задач существует много различных алгоритмов. Какой из них выбрать для решения конкретной задачи? Чаще всего интересен порядок роста необходимых для решения задачи времени и емкости памяти при увеличении входных данных. Свяжем с каждой задачей некоторое число , называемое ее размером, которое выражало бы меру количества входных данных. Например, размером задачи умножения матриц, может быть наибольший размер матриц сомножителей. Размером задачи сортировки массива – количество чисел. Пространственная (или емкостная) сложность измеряется количеством памяти, требуемой для выполнения алгоритма . Временная сложность алгоритма определяется временем, необходимым для его выполнения. Лучший способ сравнения эффективностей алгоритмов состоит в сопоставлении их порядков сложности. Этот метод применим как к временной, так и пространственной сложности. Если алгоритм обрабатывает входные данные размера n за время cn2, где c – некоторая константа, то временная сложность этого алгоритма есть О(n2) (читается “порядка n2”). Точнее, говорят, что неотрицательная функция f(n) есть O(g(n)), если существует такая константа с, что для для всех n из некоторой окрестности точки n0 имеет место неравенство f(n)<=c*g(n). Обозначают f(n) = O(g(n)) И функция f(n) есть о(g(n)), если для любого с>0 существует такая окрестность точки n0, что для для всех n из этой окрестности имеет место неравенство f(n)<c*g(n). Обозначают f(n) = о(g(n))