Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры ОАиП(теория).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
151.01 Кб
Скачать

20. Поразрядная сортировка

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

Алгоритм

Каждое число представляется в двоичном виде. Поиск движется в 2 направлениях: снизу ищем 0, сверху - 1. Разбиваем на 2 интервала, чтобы предотвратить неправильную сортировку и сортируем по 2 биту. По старшему биту ищем сверху 1, а снизу 0, меняем местами. Находим все. Если найдены все, переходим на второй бит и так до тех пор пока не кончатся биты. Требует меньше попыток, быстрее даже чем быстрая сортировка.

Код:

Procedure Radix (l,r:word; a:shorting);

var

t,k,i:word;

Function Bit(a:word; pos:byte):byte;

Begin

Bit:=(a shr pos) and 1;

End;

Begin

If (r>l) and (b>=0) Then

Begin

i:=l;

i:=r;

Repeat

While (i<j) and (Bit(a[i],b)=0) do

inc(i);

While (i<j) and (Bit(a[i],b)=1) do

dec(i);

t:=a[i];

a[i]:=a[j];

a[j]:=t;

Until i=j;

If Bit(a[R],b)=0 Then inc(j);

Radix(l,j-1,b-1);

Radix(j,R,b-1);

End;

End.

32. Деревья: построение бинарного дерева

Бинарные деревья.

Упорядоченное дерево — это дерево, у которого ветви, исходящие из каждой вершины, упорядочены по определенному критерию. Поэтому два упорядоченных дерева на рис. 9.3 — это разные, отличные друг от друга, структуры.

Упорядоченные деревья второй степени (m-арные при m=2) называют двоичными или бинарными деревьями. Упорядоченное бинарное дерево можно определить как множество элементов (вершин), которое либо пусто, либо состоит из корня с двумя отдельными двоичными деревьями, которые называют левым и правым поддеревьями этого корня. Деревья степени больше двух называют сильно ветвящимися деревьями (multiway trees).

При представлении бинарного дерева в виде связного списка каждый элемент может содержать поля данных и два структурных указателя: указатель левого (left) сына и указатель правого (right) сына. На рис. 9.4 изображена логическая структура естественного представления бинарного дерева (пустые поля указателей содержат пустые ссылки). Таким образом, элементы бинарного дерева могут иметь такой тип:

Type Pt = ^Node;

Node = Record

Key : Char;

Left, Right : Pt

End;

где, как и ранее, Kеу — это поле идентифицирующего элемент ключа; Left и Right — поля для структурных указателей.

52.Чтение типизированных файлов

type

TStudent=record

name:string[255];

oz:integer;

end;

var

Student:TStudent;

File:File of TStudent;

begin

AssignFile(F,'test.dat');

Reset(F);

Read(F,Student);

CloseFile(F);

end;