M
Danke für den Tipp mit dem Kürzen! – hab den Fehler nämlich nicht beim Quicksort-algorithmus vermutet gehabt...Hab ihn hier etwas abgekürzt gepostet.
Und ich denke, dass der Fehler bei Zeile 18 bzw. 27 ist, weiß aber nicht genau, wie ich den beheben kann...
Hab c-fee 4.0 (mingw2.95 compiler) verwendet.
#include <stdio.h>
void quickSort(double *array[], int left, int right, int x)
{
double value;
double *h;
value = *(array[left]+x);
h = array[left];
while (left < right)
{
while ((*(array[right]+x) >= value) && (left < right))
right--;
if (left != right)
{
array[left] = array[right];
left++;
}
while ((*(array[left]+x) <= value) && (left < right))
left++;
if (left != right)
{
array[right] = array[left];
right--;
}
} //end while
array[left] = h;
} //end quickSort
main()
{
int i, j;
double *ptr[6];
double feld[6][2]=
{ {15, 5},
{16, 6},
{13, 3},
{12, 2},
{14, 4},
{11, 1}
};
for(i=0; i<6; i++)
ptr[i] = &feld[i][0];
//ptr nach 2. Spalte sortieren
quickSort(ptr, 0, 5, 1);
//Output von ptr
for(i=0; i<6; i++)
{
for(j=0; j<2; j++)
printf("%g ", *(ptr[i]+j));
printf("\n");
}
printf("\n");
//ptr-Inhalt wieder in feld speichern
for(i=0; i<6; i++)
memcpy(&feld[i], ptr[i], sizeof(double)*2);
//Output von feld
for(i=0; i<6; i++)
{
for(j=0; j<2; j++)
printf("%g ", feld[i][j]);
printf("\n");
}
} //end main