Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді до іспиту по СОД.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
191.49 Кб
Скачать
  1. Сортування масивів на місці, метод Shaker (одночасний пошук мінімального та максимального елементів.

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

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

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

Var A : array[1..1000] of integer;

N,i,j,p : integer;

Min, Max : integer;

Begin

{Определение размера массива A - N) и его заполнение}

{сортировка данных}

for i:=1 to n div 2 do

begin

if A[i]>A[i+1] then

begin

Min:=i+1; Max:=i;

end

else begin

Min:=i;Max:=i+1;

end;

for j:=i+2 to n-i+1 do

if A[j]>A[Max] then Max:=j

else

if A[j]<A[Min] then

Min:=j; P:=A[i];

A[i]:=A[min]; A[min]:=P;

if max=i then

max:=min; P:=A[N-i+1];

A[N-i+1]:=A[max]; A[max]:=P; end; … End

  1. Динамічний розподіл оперативній пам’яті (виділення, ініціалізація даних, звільнення пам’яті). Лінійні, кільцеві та двонаправлені динамічні списки, переваги та недоліки. Загальна характеристика. Приклад програмного коду.

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

Данные динамической структуры:

Файлы:Текстовые , типизированные, не типезированные

Связанные и несвязанные динамические структуры:

Линейной структуры: односвязные(очередь, стек, Дек, список) и многосвязные.

Кольцевой структуры: односвязный кольцевой список и многосвязный кольцевой спосок.

Разветвленной структры: Деревья(Бинарные, Разветвленные) Графы.

  1. Динамічний список: призначення, організація, формування, ініціалізація, наприклад з файлу. Переваги та недоліки порівняно з масивами. Приклад програмного коду.

Определение. Списком называется структура данных, каждый элемент которой посредством указателя связывается со следующим элементом.

Из определения следует, что каждый элемент списка содержит поле данных (Data) (оно может иметь сложную структуру) и поле ссылки на следующий элемент (Next). Поле ссылки последнего элемента должно содержать пустой указатель (Nil).

Схематически это выглядит так:

Просмотр списка

Просмотр элементов списка осуществляется последовательно, начиная с его начала. Указатель р поочередно устанавливается на первый, второй, и т.д. элементы списка до тех пор, пока весь список не будет пройден. При этом с каждым элементом списка выполняется операция вывода поля данных на экран. Начальное значение р – адрес первого элемента списка p^. Если р указывает на конец списка, то его значение равно Nil, то есть while p<>Nil do

Begin

Write(p^.Data, ' ');

p := p^.Next;

End