Hay varios algoritmos para ordenar matrices:
Burbuja, inserción, mezcla, ordenación rápida (qsort), etc
Este es el procedimiento qsort para ordenar un arreglo bidimensional (un vector de n elementos)
Para una matríz vas a tener que hacer algunas modificaciones según que columna quieras usar
para ordenar o si querés ordenar por filas.
Para algo más detallado te convendría ver el sitio numerical recipes o alguno parecido
Código Delphi
[-]
procedure qsort(var a: arr;prim,ult,sen1:integer);
procedure quicksort(var a: arr; ilo, ihi: integer);
var
lo, hi, mid, t: integer;
begin
lo := ilo;
hi := ihi;
mid := a[(lo + hi) div 2];
repeat
while a[lo] < mid do
inc(lo);
while a[hi] > mid do
dec(hi);
if lo <= hi then begin
t := a[lo];
a[lo] := a[hi];
a[hi] := t;
inc(lo);
dec(hi);
end;
until lo > hi;
if (hi > ilo) then
quicksort(a, ilo, hi);
if (lo < ihi) then
quicksort(a, lo, ihi);
end;
begin
quicksort(a, prim, ult);
end;
saludos