Gast
#4114921
hallo miteinander,
hat mit jemand den C-code für einen quicksort?
Alternativ: könntet ihr mir verraten, was an meinem falsch ist?
---------------------------------------------------------------------
int* quicksort (int *feld, int index)
{
int buffer = 0;
int pivot = 0;
int *pointer_kl;
int *pointer_gr;
int versatz = 0;
if (index > 0)
{
pivot = feld[index/2];
pointer_kl = feld + index;
pointer_gr = feld;
do
{
while (*pointer_gr<=pivot && pointer_gr != pointer_kl)
{
pointer_gr++;
}
while (*pointer_kl>=pivot && pointer_kl != pointer_gr)
{
pointer_kl--;
}
buffer = *pointer_gr;
*pointer_gr = *pointer_kl;
*pointer_kl = buffer;
} while (pointer_gr<pointer_kl);
versatz = pointer_gr - feld;
if (versatz > (index/2) && feld[versatz] > pivot)
{
versatz = versatz-1;
}
feld[index/2] = feld[versatz];
feld[versatz] = pivot;
quicksort(feld, (versatz - 1)); //Rekursion
quicksort(feld + (versatz + 1), index - (versatz + 1));
}
else
{
return feld;
}
}
---------------------------------------------------------------------