Mam problem z sortowaniem. Robię to funkcją qsort z Kerninghana.
Oto ona:

 
void qsort( double* v[], int left, int right)

{
        int i, last;
        void swap(double*  v[], int i, int j);

        if(left>= right)
         return;
         swap(v, left, (left + right)/2);
         last = left;
         for( i= left +1; i<= right;i++)
                if(v[i]> v[left])
                        swap(v, ++last, i);
        swap(v, left, last);
        qsort(v, left, last -1);
        qsort(v, last+1, right);
}

Mam strukturę o nazwie matrix_w

 
typedef struct {
        double       **q;
        int             wn;
        int             kn;
}               matrix_w;

Jest ona zaimplementowana tymi dwoma funkcjami:

 
matrix_w *
read(FILE * p)
{

        int             n         , m, i = 0, j;        /* zmienne robocze */
        matrix_w       *a;

        if (fscanf(p, "%d %d", &n, &m) != 2)
                return NULL;

        if ((a = makem(n, m)) == NULL)
                return NULL;

        for (i = 0; i < n; i++) {
                for (j = 0; j < m; j++) {
                        if ((fscanf(p, "%lf", a->q[j] + i)) != 1)
                                return NULL;
                }
        }

        return a;
}

matrix_w       *
makem(int lw, int lk)
{
        int             i;
        matrix_w       *nm = malloc(sizeof (*nm));
        if (nm == NULL)
                return NULL;
        nm->wn = lw;
        nm->kn = lk;
        if ((nm->q = malloc(lw * sizeof (nm->q))) == NULL) {
                free(nm);
                return NULL;
        }

        for (i = 0; i < lw; i++)
                nm->q[i] = malloc(lk * sizeof(nm->q[0]));

        return nm;
}

W funkcji main piszę, więc tylko:

 matrix_w* a = read( we);

Funkcje te poprawnie czytają z pliku np.

 
3 3
5 7 1
3 6 4 
4 3 5

Moim zadaniem jest pozamieniać wiersze, sortując je według pierwszego elementu czyli powinno zamienić tą wczytaną macierz na:

 
3 3
5 7 1
4 3 5 
3 6 4 

W tym celu mamy tylko zamienić wskaźniki na pierwszy element wiersza, bo podobno kolejne elementy wiersza powinny być ustawione w tym samym miejscu pamięci na następnej pozycji. Ja jednak nie umiem tego zrobić. Proszę o pomoc, ew. o jakieś pytania jak czegoś nie sprecyzowałem.