Ich habe versucht, eine Quicksort mit einem Pseudo-Code aus einem Buch zu implementieren (sieht aus wie der aus Wikipedia), aber ich kann es nicht bekommen, damit es funktioniert.Quicksort funktioniert nicht gut
Dieser Quellcode:
int partitionare(int a[], int n, int p, int r)
{
int x, i, j, aux;
x = a[r]; // pivot
i = p - 1;
for (j = p; j < r; j++)
{
if (a[j] <= x)
{
i++;
aux = a[j];
a[j] = a[i];
a[i] = aux;
}
}
aux = a[i + 1];
a[i + 1] = a[r];
a[r] = aux;
return i + 1;
}
void quicksort(int a[], int n, int p, int r)
{
if (p < r)
{
int q = partitionare(a, n, p, r);
partitionare(a, n, p, q - 1);
partitionare(a, n, q + 1, r);
}
}
wobei p und r das beggining und das Ende des
Array istUnd die Anruffunktion:
quicksort(a, n, 0, n-1);
Sie nicht, dass zweiten Geist Argument, n. Das ist nur zu Testzwecken.
Was meinst du nicht? Welche Ergebnisse sehen Sie für Ihre Testeingabe? –
Ups, sorry, ich habe vergessen zu erwähnen. Eingabe: 2, 8, 7, 1, 3, 5, 6, 4 Ausgabe: 2, 1, 3, 4, 7, 5, 6, 8 – Altair2033