close

Вход

Забыли?

вход по аккаунту

?

Исправленный алгоритм сортировки

код для вставкиСкачать
var
FormBD: TFormBD;
count: integer; //количество записей
f1: File of TFile1;
rec1: TFile1;
f2: File of TFile2;
rec2: TFile2;
f3: File of TFile3;
rec3: TFile3;
CurrentFileName1, CurrentFileName2, CurrentFileName3: string; //текущие имена файлов
/Сортировка по коду данных таблицы 1
procedure TFormBD.ButtonSortTable1Click(Sender: TObject);
var
FileHandle: integer; //дескриптор файла
size: integer; //размер одной записи
rec1, rec2: TFile1;
i,j,flag, countRec: integer;
begin
size:=sizeOf(TFile1); //определение количества байт (размера), которые отводятся для хранения одной записи
If CurrentFileName1=''
then begin
ShowMessage('Выберите файл для сортировки');
exit
end;
ButtonSave1.Click;
AssignFile(f1,CurrentFileName1);
reset(f1);
//Подсчет числа записей
countrec:=Filesize(f1)-1;
closeFile(f1);
FileHandle:=FileOpen(CurrentFileName1, fmOpenReadWrite); //открытие файла для чтения и записи
//Сортировка
j:=countRec div 2; //определяем величину первого шага
repeat
repeat
flag:=0;
for i:=1 to countRec-j do
begin
FileSeek(FileHandle, (i-1)*size, 0); //перемещение файлового указателя на i элемент файла
FileRead(FileHandle, rec1, size); //чтение size байт из FileHandle в буфер rec1
FileSeek(FileHandle, (i+j-1)*size, 0); //перемещение файлового указателя на i+j элемент файла
FileRead(FileHandle, rec2, size); //чтение size байт из FileHandle в буфер rec2
if StrToInt(rec1.kod)>StrToInt(rec2.kod)
then begin
FileSeek(FileHandle, (i-1)*size, 0); //перемещение файлового указателя на i элемент файла
FileWrite(FileHandle, rec2, size); //запись size байт из в буфера rec2 в FileHandle
FileSeek(FileHandle, (i+j-1)*size, 0); //перемещение файлового указателя на j+j элемент файла
FileWrite(FileHandle, rec1, size); //запись size байт из буфера rec1 в FileHandle
flag:=1;
end;
end;
until flag = 0;
j:=j div 2;
until j=0;
FileClose(FileHandle); //закрытие файла
ShowMessage('Сортировка завершена!'+#13#10+'Для просмотра результата просмотрите файл.');
ButtonClearTable1.Click;
end;
Документ
Категория
Без категории
Просмотров
10
Размер файла
15 Кб
Теги
алгоритм, исправленный, сортировка
1/--страниц
Пожаловаться на содержимое документа