Создать файл f в котором записаны 30 000 чисел в случайном порядке. Затем написать отдельную программу, которая читает файл f и с помощью быстрой сортировки отсортировывает и вписывает в файл g результат — Pascal(Паскаль)

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.

Leave a Comment

4 + 4 =