Почему то новички путают индексы при обращении к ячейкам StringGrid.
Первый в квадратных скобках индекс колонки, второй через запятую - строки, а не наоборот, хотя легко увидеть при наведении мышки на слово Cell:
"[ACol : Integer; ARow : Integer]".
Классический "пузырьковый" метод сортировки (или как его назвал автор темы "метод обмена"):
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
i, c, j : integer;
StopSort : Boolean;
begin
for I := P downto 0 do begin
StopSort := True;
for J := 1 to I do
if a[J-1] > a[J] then begin //if a[J] > a[J-1] then begin //изменяет порядок сортировки
c := A[J];
A[J] := A[J-1];
A[J-1] := c;
StopSort := False;
end;
if StopSort then Break;
end;
for i := 0 to P do
//!!!в квадр. скобках первым идет индекс колонки,затем индекс строки
stringGrid1.cells[0, i] := IntToStr(a[i]);
end;
Как у автора сделано тоже работает нормально, только массив помещать в StringGrid надо после сортировки и не путать индексы.