ho trovato l'algoritmo che fa per te!!

(Questo te lo puoi compilare e provarlo per vedere come funziona)

#define N_COL 3
#define N_ROW 3

int main(int argc, char *argv[])
{
int matrice[N_ROW][N_COL];
int j,i,cont=N_ROW*N_COL,tmp,passi;
int* ptr;
int* ptrApp;
//inserimento
for(i=0;i<N_ROW;i++)
for(j=0;j<N_COL;j++,cont--)
matrice[i][j]=cont;

printf("stampa prima\n");
for(i=0;i<N_ROW;i++)
{
for(j=0;j<N_COL;j++,cont-1)
{
printf("%d ",matrice[i][j]);
}
printf("\n");
}


printf("\nstampa dopo\n");
//ordina
passi=(N_ROW*N_COL);
ptr=*matrice;
for(i=0;i<N_ROW*N_COL-1;i++)
{
for(j=0;j<passi-1;j++)
{

if( *(ptr+j)> *(ptr+j+1))
{
tmp=*(ptr+j);

ptrApp=(ptr+j);
*ptrApp=*(ptr+j+1);

ptrApp=(ptr+j+1);
*ptrApp=tmp;

}
}
passi--;
}//fine ordina

//stampa dopo
for(i=0;i<N_ROW;i++)
{
for(j=0;j<N_COL;j++)
{
printf("%d ",matrice[i][j]);
}
printf("\n");
}

system("PAUSE");
return 0;
}