Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 4 Типовые алгоритмы обработки информации

____________________________________________________________________

var

str, str_lat, str_kyr: string;

i: integer;

{Процедура сортировки методом вставок латиницы}

procedure insert(var str: string);

var

i, j: integer;

v: char;

begin

for i:= 2 to Length(str) do

begin

v:= str[i]; j:= i - 1;

{Условие выхода из цикла: найдено подходящее место для текущего элемента или достигнуто начало строки}

while (str[j] > v) and (j > 0) do

begin

str[j+1]:= str[j];

dec(j);

end;

str[j+1]:= v;

end;

end;

{Процедура сортировки методом вставок кириллицы}

procedure insert_kyr(var str: string);

var

i, j: integer;

v, v1: string[2];

291

4.1 Алгоритмы сортировки

____________________________________________________________________

begin

for i:= 3 to Length(str) do

begin

v:= Copy( str, i, 2);

j:= i - 2;

{Условие выхода из цикла: найдено подходящее место

для текущего элемента или достигнуто начало строки}

while (Copy(str, j, 2) > v) and (j > 0) do begin

v1:= Copy(str, j, 2); str[j+2]:= v1[1]; str[j+3]:= v1[2]; dec(j, 2);

end;

str[j+2]:= v[1]; str[j+3]:= v[2];

end;

end;

begin

str:= 'зжедгвбаhgfedcbaиклмнijklmn'; i:= 1;

str_lat:= ''; str_kyr:= '';

while i <= Length(str) do begin

if ord(str[i]) < 128 then

begin

292

Глава 4 Типовые алгоритмы обработки информации

____________________________________________________________________

str_lat:= str_lat + str[i]; inc(i);

end else begin

str_kyr:= str_kyr + Copy(str, i, 2); inc(i, 2);

end;

end;

writeln(UTF8ToConsole('Исходная строка: '),

UTF8ToConsole(str));

insert(str_lat); // сортировка латиницы insert_kyr(str_kyr); // сортировка кириллицы

str:= Concat(str_lat, str_kyr);

writeln(UTF8ToConsole('Отсортированная строка: '),

UTF8ToConsole(str));

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Напишем программу сортировки массива строк методом вставок. В про-

грамме строки сортируются по первому символу строки. Например, если задан массив из 4 строк:

Яковлев

Петров

Сидоров

Алексеев

293

4.1 Алгоритмы сортировки

____________________________________________________________________

то программа выдаст массив в следующем виде:

Алексеев

Петров

Сидоров

Яковлев

program insertion_sort_array;

uses

CRT, FileUtil;

var

str: array of string;

i, n: integer;

{Процедура сортировки методом вставок}

procedure insert(var str: array of string); var

i, j: integer; stroka: string;

begin

for i:= 1 to High(str) do begin

stroka:= str[i]; j:= i - 1;

while (str[j][1] > stroka[1]) and (j >= 0) do begin

str[j+1]:= str[j]; dec(j);

end;

str[j+1]:= stroka;

294

Глава 4 Типовые алгоритмы обработки информации

____________________________________________________________________

end;

end;

begin

writeln(UTF8ToConsole('Введите количество строк в массиве')); readln(n);

SetLength(str, n); writeln(UTF8ToConsole('Введите '), n); writeln(UTF8ToConsole('строк(и) символов'));

for i:= 0 to n - 1 do

readln(str[i]);

writeln(UTF8ToConsole('Исходный массив строк'));

for i:= 0 to n - 1 do

writeln(str[i]);

insert(str);

writeln(UTF8ToConsole('Отсортированный массив строк: '));

for i:= 0 to n - 1 do

writeln(str[i]);

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Отсортируем массив менеджеров (раздел 3.6.3.3. и 4.1.2) методом вставок:

program insertion_sort_file; uses

CRT, SysUtils, OutScr, FileUtil; type

manager= record

295

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2714
2N4264RE