Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_k_ekzamenu_po_AiSD.docx
Скачиваний:
42
Добавлен:
29.04.2019
Размер:
417.06 Кб
Скачать

Векторы

Самая простая статическая структура - это вектор. Век­тор - это чисто линейная упорядоченная структура, где отно­шение между ее элементами есть строго выраженная после­довательность элементов структуры (рис. 2.5).

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

Для доступа к этому элементу используется функция адресации, которая формирует из значения индекса адрес слота, где находится значение исходного элемента. Для объ­явления в программе вектора необходимо указать его имя, количество элементов и их тип (тип данных)

Пример:

var

Ml: Array [1..100] of integer; M2: Array [1...10] of real;

Вектор состоит из совершенно однотипных данных и количество их строго определено.

2.3.2 Массивы

В общем случае элемент массива - это есть элемент вектора, который сам по себе тоже является элементом структуры (рис. 2.6).

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

5. Записи и таблицы.

Запись представляет из себя структуру данных последовательного типа, где элементы структуры расположены один за другим как в логическом, так и в физическом представлении. Запись предполагает множество элементов разного типа. Элементы данных в записи часто называют полями записи.

Логическая структура записи может быть представлена как

В графическом виде, так и в табличном.

Операции над записями:

1.Прочтение содержимого поля записи.

2. Занесение информации в поле записи.

3. Все операции, которые разрешаются над полем записи, соответствующего типа.

При задании таблицы указывается количество содержащихся в ней записей.

Пример:

Type ST = Record

Num: Integer; Name: String[15];

Fak: String[5]; Group: String[10];

Angl: Integer; Physic: Integer;

var Table: Array [1...19] of St;

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

Операции с таблицами:

1. Поиск записи по заданному ключу.

2. Занесение новой записи в таблицу.

Ключ - это идентификатор записи. Для хранения этого идентификатора отводится специальное поле.

Составной ключ - ключ, содержащий более двух полей.

34. Сортировка методом прямого включения

Элементы мысленно делятся на уже готовую последовательность a1,...,ai-1 и исходную последовательность. При каждом шаге, начиная с i = 2 и увеличивая i каждый раз на единицу, из исходной последовательности извлекается i-й элемент и перекладывается в готовую последовательность, при этом он вставляется на нужное место.

Алгоритм этой сортировки таков:

for i = 2 to n

x = a(i)

находим место среди а(1)…а(i) для включения х

next i

Алгоритм сортировки методом прямого включения без барьера

for i = 2 to n

x = a(i)

for j = i - 1 downto 1

if x < a(j)

then a( j + 1) = a(j)

else go to L

endif

next j

L: a( j + 1) = x

next i

return

Недостатком приведенного алгоритма является нарушение технологии структурного программирования, при которой нежелательно применять безусловные переходы. Если же внутренний цикл организовать как цикл while , то необходима постановка «барьера», без которого при отрицательных значениях ключей происходит потеря значимости и «зависание» компьютера.

Алгоритм сортировки методом прямого включения с барьером

for i = 2 to n

x = a(i)

a(0) = x {a(0) - барьер}

j = i - 1

while x < a(j ) do

a( j +1) = a(j )

j = j - 1

endwhile

a( j +1) = x

next i

return

Эффективность

Минимальные оценки числа сравнений Cmin и перемещений Mmin встречаются в случае уже упорядоченной исходной последовательности элементов, наихудшие же оценки Сmax и Mmax - когда они первоначально расположены в обратном порядке.

Количество сравнений в худшем случае, когда массив отсортирован противоположным образом, Сmax = n(n - 1)/2, то есть порядок О (n2). Количество перестановок Mmax = Cmax + 3(n-1), то есть порядок О (n2). Если же массив уже отсортирован, то число сравнений и перестановок минимально: Cmin = n-1; Mmin = 3(n-1).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]