TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Сортировка записей 

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

type
address = record
name: string[30];
street: string[40];
city: string[20];
state: string[2];
zip: string[9];
end;
После описания адреса необходимо изменить следующим образом определение данного "DataItem":
DataItem = address;
После выполнения этих изменений нужно скорректировать блок сравнений в алгоритме быстрой сортировки, используя то поле, ко- торое применяется в качестве ключа сортировки. В приводимой ниже версии быстрой сортировки в качестве ключа используется поле фа- милии "name". Это означает, что список почтовых корреспонденций сортируется в алфавитном порядке фамилий.
{ быстрая сортировка записей с почтовым адресом }
procedure QsRecord(var item: DataArray; count:integer);
procedure qs(l, r:integer; var it:DataArray);
var
i, j: integer;
x, y: DataItem;
begin
i := l; j := r;
x := it[(l+r) div 2];
repeat
while it[i].name < x.name do i := i+1;
while x.name < it[j].name do
j := j-1;
if i<=j then
begin
y := it[i];
it[i] := it[j];
it[j] := y;
i := i+1; j := j-1;
end;
until i>j;
if l if l end;
begin

qs(1, count, item);
end; {конец быстрой сортировки записей}

(с)Все права защищены

По всем интересующим вопросампрошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz