- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •1. Заголовок
- •2. Описательная часть
- •3. Тело подпрограммы
- •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
- •Особенности передачи структурированных данных подпрограммы.
- •Опережающие описания.
- •Функциональный тип. Процедурный тип.
- •Сортировки.
- •Сортировка бинарными включениями.
- •Сортировка простых выборов.
- •Сортировки простым обменом.
- •Шейкер-сортировка.
- •Сортировка Шелла.
- •Модули.
- •Структура модуля.
- •Особенности компиляции программ с подключаемыми модулями.
- •Циклические ссылки модулей друг на друга.
- •Стандартные модули в Паскале.
- •Динамические переменные.
- •Динамические структуры.
- •Однонаправленные списки.
- •Формирование списков. Формирование очереди.
- •Формирование стека.
- •Классическое формирование очереди (по Вирту).
- •Работа со списками.
- •1) Проход по списку;
- •2) Добавление элемента в список;
- •Удаление элемента из списка.
- •«Древовидные структуры»
- •Удаление элемента из дерева
- •Самоупорядочивающийся список
- •Частотный словарь
- •Нерекурсивное формирование дерева
Сортировка бинарными включениями.
Сортировку простыми включениями легко усовершенствовать, используя алгоритм бинарного поиска. Алгоритм бинарного поиска будет использоваться для поиска места включения элемента на каждом шаге сортировки.
При использовании алгоритма бинарного поиска не рассматривается вся последовательность относительно текущего элемента. Она делится пополам, и относительно этого среднего элемента дальнейший поиск происходит в левой или правой части последовательности.
procedure sort2;
var i,j,l,r,m:integer; x:real;
begin
for i:=2 to n do
begin x:=a[i]; l:=1; r:=i-1;
while l < = r do
begin m:=(l+r)div2;
if x < a[m] then r :=m-1
else l:=m+1;
for j:=i-1 downto l do
a[j+1]:=a[j];
a[l]:=x;
end;end;
x=a[i]
l=1
r=i-1
m=(l+r)dw2
l=m+1
r=m-1
a[j+1]=a[j]
a[1]=x
Сортировка простых выборов.
На первом шаге выбирается минимальный элемент из массива и меняется местами с первым элементом. На втором шаге из остатка массива (без первого элемента) опять выбирается минимальное значение и обменивается местами со вторым элементом и т.д.
procedure sort3;
var i,j,k:integer; x:real;
begin
for i:=1 to n-1 do
begin k:=i; x:=a[i];
f
k = i
a[k]=a[i] a[i]=x
if a[j] < x then begin
k
x=a[i]
a[k]:=a[j];
a[k]:=a[i];
a[i]:=x;
end; end;
k=i
x=a[j]
Сортировки простым обменом.
44 06 06 06 06 06 06 06
55 44 12 12 12 12 12 12
12 55 44 18 18 18 18 18
42 12 55 44 42 42 42 42
94 42 42 55 44 44 44 44
18 94 94 42 55 55 55 55
06 18 18 94 67 67 67 67
67 67 67 67 94 94 94 94
procedure sort4;
var i,j:integer; x:real;
begin
for j:=n downto i do
if a[j-1] > a[j] then
begin x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x; end;
end;end;
x=a[j-1]
a[j-1]=a[j]
a[j]=x
Шейкер-сортировка.
Усовершенствование: на четных шагах легкие элементы всплывают, на нечетных тяжелые элементы тонут.
44 06 06 06 06 06
55 44 44 12 12 12
12 55 12 44 18 18
42 12 42 18 44 42
94 42 55 42 42 44
18 94 18 55 55 55
06 18 67 67 67 67
67 67 94 94 94 94
procedure sort5;
var j,k,l,r:integer; x:real;
begin l:=2; r:=n; k:=n;
repeat
for j:=r downto l do
if a[j-1] > a[j] then
begin x:=a[j-1]; a[j-1]:=a[j];
a[j]:=x; k:=j; end;
l:=k+1;
for j =l to r do
if a[j-1] > a[j] then
begin
x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x;
k:=j;
end; r:=k-1;
until l > r;
end;
L=2
R=N
K=N
X=A[J-1]
A[J-1]=A[J]
A[J]=X
K=J
R=K-1
L=K+1
X=A[J-1]
A[J-1]=A[J]
A[J]=X
K=J