Программа показывает как отсортировать массив записей по возрасту.
Так можно упорядочить любую структуру данных. Надо только позаботиться о том, по какому критерию надо сортировать.
По убыванию? Пожалуйста! Поменяйте знак в процедуре Compare.

Код
program SortRec;

const N = 4;
type
   TInfo = record
     Age:  integer; { возраст }
     Name: string [20];
   end;

   List = array [1..N] of TInfo; { массив записей содержит возраст и имя }

{ сравнивать по возрасту }
function Compare (T1,T2: TInfo): integer;
begin
     if T1.Age > T2.Age then Compare := 1
     else if T1.Age = T2.Age then Compare := 0
     else Compare := -1
end;

procedure QuickSort (var A: List; Lo, Hi: Integer);
var
  i,j: integer;
  x, y: TInfo;

procedure Sort (l, r: Integer);
begin
     repeat
           x := A[(l+r) shr 1];
           i := l; j := r;
           repeat
                 while Compare( A[i], x ) < 0 do inc(i);
                 while Compare( A[j], x ) > 0 do dec(j);
                 if i <= j then
                 begin
                      y := A[i]; A[i] := A[j]; A[j] := y;
                      inc(i); dec(j);
                 end;
           until i > j;

           if l < j then Sort (l, j);
           l := i;
     until l >= r;
end;

begin
      Sort (Lo,Hi);
end; {QuickSort}

var
  Data: List;
  I: Integer;

begin { Main }

      { здесь заполнение массива записей }

      QuickSort (Data, 1, N); { сортировка массива записей от 1-й до N-й записи }

      { здесь вывод на экран массива записей }

end.


Если надо вывести список людей по алфавитному порядку, то здесь немного сложнее.

Код
function strcomp(Key1, Key2: String): Integer;
var i,m,c: integer;
begin
     c:=0;
     m:=length(Key1);
     if m>length(Key2) then m:=length(Key2);
     for i:=1 to m do
     begin
          c:=ord(Key1[i])-ord(Key2[i]);
          if c<>0 then break;
     end;
     strcomp:=c
end;


М
Программа выведена из FAQ-а, т.к. в функции strcomp была обнаружена ошибка...
Подробности - здесь: Задача на слова