Preliminariamente ti consiglio di postare il codice indentandolo, magari utilizzando le tag apposite... giusto perché così si capisce meglio ed è più facile aiutarti.

Il problema è innanzitutto nella funzione di ordinamento. Mi sembra che volessi implementare il Bubble sort ma così è sbagliato, tra l'altro come errore più evidente incrementi l'indice i anche nel ciclo for interno dove invece andrebbe incrementata j.

Inoltre l'indice k del vettore v (nel main) va incrementato nel ciclo for interno sia quando copi gli elementi dal vettore alla matrice sia quando fai la copia inversa, altrimenti incrementando k nel ciclo esterno consideri un numero di elementi pari al numero di righe della matrice, e non a quello dei suoi elementi.

Ricorda anche di azzerare l'indice k dopo il primo doppio for e occhio anche alla stampa della matrice alla fine: la stampa degli elementi deve avvenire - ancora una volta - nel ciclo for interno.

Poi... perché passi per riferimento le dimensioni della matrice alla funzione di lettura? Non ti compromette il funzionamento del programma ma è inutile...

Ti consiglio di provare a debuggarlo da solo, comunque nel caso avessi troppi problemi ti posto il codice corretto... senza eccessive modifiche al tuo.

codice:
#include <iostream>
using namespace std;

void leggi_mat(int m[100][100], int c, int r);
void ordina(int *v, int n);

int main()
{
    int m[100][100];
    int *v;
    int n, r, c, k = 0, i, j;
    cout << "r";
    cin >> r;
    cout << "c";
    cin >> c;
    n = r * c;
    v = (int *) malloc(n * sizeof(int));
    leggi_mat(m, r, c);
    for (i = 0; i < r; i++) {
	for (j = 0; j < c; j++) {
	    v[k] = m[i][j];
	    k++;
     }
    }

    ordina(v, k);

    k = 0;
    for (i = 0; i < r; i++) {
	for (j = 0; j < c; j++) {
	    m[i][j] = v[k];
	    k++;
            cout << m[i][j] << "\t";
        }
       cout << endl;
    }
}

void leggi_mat(int m[100][100], int c, int r)
{
    int i, j;
    for (i = 0; i < r; i++)
	for (j = 0; j < c; j++) {
	    cout << "m[" << i << "][" << j << "]";
	    cin >> m[i][j];
	}
}



void ordina(int *v, int n)
{
    int i, j, temp;

    for (i = 0; i<n-1; i++)

       for (j=n-1; j>i; j--)

          if (*(v + i) > *(v + j)) {
             temp = v[i];
             v[i] = v[j];
             v[j] = temp;
          }
}