uses crt;
const n=30000;
var x:array[1..30000] of integer;
f,g:text;
a,i:integer;
nf,ng,s:string;
procedure sort(l,r:integer);
var
i,j,x1,y1,m: integer;
begin
i:=l;
j:=r;
m:=round ((l+r)/2);
x1:=x[m];
repeat
while x[i]<x1 do inc(i);
while x[j]>x1 do dec(j);
if i<=j then
begin
y1:=x[i];
x[i]:=x[j];
x[j]:=y1;
inc(i);
dec(j);
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin
clrscr;
randomize;
write('Имя файла для записи исходного массива ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
rewrite(f);
write('Имя файла для записи отсортированного массива ');
readln(ng);
ng:=ng+'.txt';
assign(g,ng);
rewrite(g);
writeln(f,'Ishodnyj massiv:');
for i:=1 to n do
begin
a:=random(500);
write(f,' ',a);{запишем в файл 30000 случайных чисел}
end;
close(f);
reset(f);
readln(f,s);{пропустим первую строку, там пояснение - Ishodnyj massiv:}
for i:=1 to n do
read(f,x[i]);{считываем числа в массив}
close(f);
sort(1,n);{сортируем}
writeln(g,'Sortirovka: ');
for i:=1 to n do
write(g,' ',x[i]);{пишем в новый файл}
write('Отсортированный массив записан в файл ',ng);
close(g);
readln
end.