Jestem początkujący i nie mogę tak szybko ogarnąć programowania(nadążyć za studiami). W tej chwili chciałbym użyć qsorta(standardowego), ale z racji że nie bardzo go rozumiem, to chciałem użyć qsorta z Kerninghana i nazwałem go sobie qsor().
Oto on:

 
void qsor( int v[], int left, int right)
{
        int i, last;
        void swap(int 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);
        qsor(v, left, last -1);
        qsor(v, last+1, right);
}

Mam stworzoną strukturę przedefiniowaną na matrix_w.

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

q to tablica wskaźników. Te wskaźniki wskazują na wiersze macierzy o wielkości wn*kn.
Ja chcę teraz poprzestawiać te wskaźniki tak żeby to na co wskazują było uszeregowane powiedzmy malejąco, czyli chce poprzestawiać te wskaźniki na wiersze tak by wiersze były uszeregowane według pierwszego elementu wiersza. Niestety nie mogę znaleźć sposobu, żeby to zapisać.
Chodzi mi o wywołanie qsor w main:
Na razie mam tak, ale nie działa, dodam że funkcję swap jest napisana z Kerninghana, więc jest raczej dobra.

   matrix_w* a = read( we);
   qsor(a->q[0], 1, 6 );