Frage von Allwissender98, 25

Quicksort in C funktioniert nicht?

Hallo, da wir in der Schule gerade Sortieralgorythmen durchnehmen, habe ich mir mal ldie Mühe gemacht den Quicksort in C zu schreiben. Allerdings gibt das Programm auf der Konsole nichts aus und beendet sich selber auch nicht. Nun wollte ich euch mal Fragen ob ihr eine Idee habt woran das liegen könnte. Ich versuche mal den Code irgendwie schön formatiert hir reinzustellen.

include <>
include <>

void QuickSort(int array[], int Anfang, int Ende) {
  int LinkerZeiger = Anfang;
  int RechterZeiger = Ende;
  int Pivot = array[Ende];
  int Temp;
  int i;
  printf("%d", Anfang);
  printf("%d", Ende);
  if(Anfang==Ende)
  {
    return;
  }
  while(RechterZeiger > LinkerZeiger)
  {
    while(array[LinkerZeiger] < Pivot); { LinkerZeiger++; }while(array[RechterZeiger] > Pivot);
    {
        RechterZeiger--;
    }

    Temp = array[LinkerZeiger];
    array[LinkerZeiger] = array[RechterZeiger];
    array[RechterZeiger] = Temp;
  }


  for(i=0;i<9;i++)
  {
    printf("%d" , array[i]);
    printf("\n");
  }

  QuickSort(array, Anfang, RechterZeiger-1);
  QuickSort(array, RechterZeiger, Ende);
}

void main() { printf("%s", "Test"); int array[] = {8,6,2,1,3,5,4,7,9,10}; int i;
    QuickSort(array, 0, 9);
}
Antwort
von FabianHolmes, 4
while(array[LinkerZeiger] < Pivot);

Das ist leider nicht korrekt. Hiermit beendest du einen Ausdruck schon mit dem Semikolon. Du solltest dich mit dem Syntax von C näher beschäftigen. 

Eine Schleife soll auch beenden, wenn das Ende erreicht ist. Das sehe ich in deinem Fall nicht. 

Ich würde mit einer while Schleife machen und dann kannst Du die Funktion rekursiv (d.h. selbst) aufrufen mit dem angepassten Parametern, so lange bis das Ende erreicht ist anstatt mehrere While Schleifen in einem Block, was den Code unübersichtlich macht. 

Noch ein Tipp: Benenne die Variablen in Englisch - so liest der Code auch besser ein. 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten