Помогите разобраться и наставить на путь истиный, дана программа с сортировками, нужно перенести в делфи, естественно с интерфейсом.
Код:
Program Sortirovka;
uses
Utils,Crt;
type
DateTime=record
Day,Month,Year,Hour,Minute,Second,Milliseconds:integer;
end;
var ob_i,ob_j,ob_z,start_ob,end_ob: integer; ob_M: array [1..32000] of integer; // var Обмена
vb_i,vb_k,vb_a,vb_x,start_vb,end_vb: integer; vb_M: array [1..32000] of integer; // var Выбора
vs_i,vs_j,vs_z,start_vs,end_vs: integer; vs_M: array [1..32000] of integer; // var Вставки
time: DateTime;
i,j,r,tmpk,zav: integer; ind: boolean; tmp1p,tmpp: real;
const n = 5000;
BEGIN
randomize;
writeln('Генерирую массивы, пожалуйста подождите...');
/// Заполняем массивы ///
tmpk:=1; tmp1p:=n/100; tmpp:=tmp1p; zav:=1;
for i := 1 to n do
begin
repeat
ind:=true;
r:=random(n)+1;
for j := 1 to i do
if r = ob_M[j] then begin ind:=false;
{case tmpk of
100: write('|'); 200: write('/'); 300: write('-'); 400: write('\'); 500: begin write('|'); tmpk:=0; end;
end;
tmpk:=tmpk+1; GotoXY(43,1);}
end;
until ind;
ob_M[i]:=r; vb_M[i]:=r; vs_M[i]:=r;
if i = tmpp then begin tmpp:=tmpp+tmp1p; GotoXY(1,2); write('Завершено: ',zav,'%'); zav:=zav+1; end;
end;
///
writeln(' Выполнено.');
writeln;
writeln('Старт выполнения сортировки "Обменом"...');
start_ob:=Milliseconds;
/// Сортировка обменом (пузырьком) ///
tmpp:=n-1-tmp1p; zav:=1;
for ob_i:=n-1 downto 1 do {n - размер массива M[]}
begin
for ob_j:=1 to ob_i do
if ob_M[ob_j] > ob_M[ob_j+1] then
begin
ob_z:= ob_M[ob_j];
ob_M[ob_j]:= ob_M[ob_j+1];
ob_M[ob_j+1]:= ob_z;
{case tmpk of
1000: write('|'); 2000: write('/'); 3000: write('-'); 4000: write('\'); 5000: begin write('|'); tmpk:=0; end;
end;
tmpk:=tmpk+1; GotoXY(41,4);}
end;
if ob_i = tmpp then begin tmpp:=tmpp-tmp1p; GotoXY(1,5); zav:=zav+1; write('Завершено: ',zav,'%'); end;
end;
end_ob:=Milliseconds - start_ob;
writeln(',время выполнения: ',end_ob div 1000,'сек. ',end_ob mod 1000 div 10,'мсек');
writeln;
{write('вывод значений ob_M[]: ');
for ob_i:=1 to n do
write(ob_M[ob_i]:4);
writeln;}
///
writeln('Старт выполнения сортировки "Выбором"...');
start_vb:=Milliseconds;
/// Сортировка выбором ///
tmpp:=n-2-tmp1p; zav:=1;
for vb_k:=n downto 2 do {k- количество элементов для поиска max }
begin
vb_a:=1; { m - место max }
for vb_i:=2 to vb_k do if vb_M[vb_i]>vb_M[vb_a] then vb_a:=vb_i;
{меняем местами элементы с номером m и номером k}
vb_x:=vb_M[vb_a]; vb_M[vb_a]:=vb_M[vb_k]; vb_M[vb_k]:=vb_x;
if vb_k = tmpp then begin tmpp:=tmpp-tmp1p; GotoXY(1,8); zav:=zav+1; write('Завершено: ',zav,'%'); end;
end;
end_vb:=Milliseconds - start_vb;
writeln(',время выполнения: ',end_vb div 1000,'сек. ',end_vb mod 1000 div 10,'мсек');
writeln;
{write('вывод значений vb_M[]: ');
for vb_i:=1 to n do
write(vb_M[vb_i]:4);
writeln;}
///
writeln('Старт выполнения сортировки "Вставкой"...');
start_vs:=Milliseconds;
/// Сортировка вставкой ///
tmpp:=tmp1p; zav:=0;
for vs_i := 2 to n do
begin
vs_z := vs_M[vs_i];
vs_j := vs_i - 1;
while (vs_j >= 1) and (vs_M[vs_j] > vs_z) do
begin
vs_M[vs_j + 1] := vs_M[vs_j];
vs_j := vs_j - 1;
end;
vs_M[vs_j + 1] := vs_z;
if vs_i = tmpp then begin tmpp:=tmpp+tmp1p; GotoXY(1,11); zav:=zav+1; write('Завершено: ',zav,'%'); end;
end;
end_vs:=Milliseconds - start_vs;
writeln(',время выполнения: ',end_vs div 1000,'сек. ',end_vs mod 1000 div 10,'мсек');
writeln;
{write('вывод значений vs_M[]: ');
for vs_i:=1 to n do
write(vs_M[vs_i]:4);
writeln; writeln;}
///
if (end_ob < end_vb) and (end_ob < end_vs) then writeln('Все сортировки выполнены! Самый быстрый метод: "Сортировка обменом"!');
if (end_vb < end_ob) and (end_vb < end_vs) then writeln('Все сортировки выполнены! Самый быстрый метод: "Сортировка Выбором"!');
if (end_vs < end_ob) and (end_vs < end_vb) then writeln('Все сортировки выполнены! Самый быстрый метод: "Сортировка Вставкой"!');
if (end_vs = end_vb) then writeln('Все сортировки выполнены! Самого быстрого метода нет!');
END.