program quicksort;
var
F2:text;
I:integer;
M1:array[1..10] of integer;
procedure Sort(A,B:integer);
var I,J,X,P:integer;
begin
Repeat
I:=A; J:=B;
X:=M1[(B+1)div 2];
if M1[I]<X then inc(I); {Вот здесь І приобретает нереальные значения}
if M1[J]>X then dec(J);
If I<=J then begin
P:=M1[I];
M1[I]:=M1[J];
M1[J]:=P;
inc(I); dec(J);
end;
Until I>J;
If A<J then Sort(A,J);
If I<B then Sort(I,B);
end;
begin
Assign(F2,'Sort.sol');
rewrite(F2);
randomize;
For I:=1 to 10 do
M1[I]:=random(100);
Sort(1,10);
For I:=1 to 10 do write(F2,M1[I]);
close(F2);
end.
Выполнял на TDE и Borland Pascal
Помогите разобратся