Помогите разобраться в алгоритме, пожалуйста

for i := 1 to sqr(N) - 1 do
Begin
  RowCurr := 1;
  ColCurr := 1;

  dRow := 1;
  dCol := 0;
  DirChanges := 0;
  Fill_Length := N;
  for j := 1 to sqr(N) - i do
  Begin
    ColPrev := ColCurr;
    RowPrev := RowCurr;
    //Получение следующих координат
    Dec(Fill_Length);
    if Fill_Length = 0 then
    Begin
      Fill_Length := N - ((DirChanges div 2) - 1) - 2;
      Temp := dRow;
      dRow := -dCol;
      dCol := Temp;
      Inc(DirChanges);
    End;
    Inc(ColCurr, dCol);
    Inc(RowCurr, dRow);

    //Обычное сравнение соседних элементов
    if A[RowCurr, ColCurr] > A[RowPrev, ColPrev] then
    Begin
      Temp := A[RowCurr, ColCurr];
      A[RowCurr, ColCurr] := A[RowPrev, ColPrev];
      A[RowPrev, ColPrev] := Temp;
    End;
  End;
End;

Ответы (0 шт):