# Quicksort Struktogramm



## Big ? (15. Okt 2008)

Und zwar würde ich gern quicksort programmieren nach diesem Struktogramm:

http://www.schule.de/schulen/oszhdl...ormatik/sort-such/quicksort_struktogramm.html

allerdings weiß ich nicht wie das in der vor letzten und letzten if Abfrage gemeint ist ( quicksort(anfang, rechterZeiger)).
Sowas hab ich noch nicht gesehen. Kann mir jdm helfen wie ich das in Java umsetzen kann?

mfG


----------



## SlaterB (15. Okt 2008)

falls anfang < rechterZeiger, dann rufe quicksort mit den Parametern anfang, rechterZeicher auf,
sonst tue nix

usw


----------



## Big ? (15. Okt 2008)

danke für die schnelle antwort...
aber wie schreib ich das in Java?


----------



## SlaterB (15. Okt 2008)

2.5 Bedingte Anweisungen oder Fallunterscheidungen
http://openbook.galileocomputing.de...02_005.htm#mjf1b8c9512c5a0ea605533d74d74964d6


----------



## Big? (15. Okt 2008)

als wie man so eine abfrage macht das versteh ich schon nur wie ich dann quicksort mit den parametern noch mal aufrufe ist mir unklar...

if(5+1)


----------



## big? (15. Okt 2008)

ich wollt eigentlich den Code posten^^


```
public static int [] quicksort (int [] feld1 ){
    int anfang= feld1[0];
    int ende= feld1[feld1.length];
    int links= anfang;
    int rechts= ende;
    int pivot= feld1[(links + rechts)/2];
    int tausch=0;
    do{
      while (feld1[links]<pivot){
        links=links+1;
      }
      while (feld1[rechts]>pivot){
        rechts=rechts-1;
      }
      if(links <= rechts){
        tausch=feld1[links];
        feld1[links]=feld1[rechts];
        feld1[rechts]=tausch;
        links= links +1;
        rechts= rechts -1;
      }
    } while(rechts < links);
    if(anfang<rechts){
      quicksort(anfang, rechts);
    }
    if(links<ende){
      quicksort(links, ende);
    }
    return feld1;
```


----------



## SlaterB (15. Okt 2008)

lasse erstmal diese beiden Zeilen weg, kannst du dann den Rest programmieren,
und noch eine Test-Klasse die das auch ausführt?

irgendwo muss doch schon ein Aufruf
quicksort(parameter1,parameter2);
stehen

und hier sollst du nochmal
quicksort(richtiger parameter1, richtiger parameter2);
hinschreiben,

was kann an einem Methodenaufruf schwer sein?

edit: sieht doch gut aus im Code?
edit2: ok, Parameter passen nicht ganz


----------



## Big ? (15. Okt 2008)

also hab ich das so richtig gemacht?
sorry erneuter methodenaufruf kann ich noch nicht...
nun gibt er aber den Fehler quicksort(int[]) cannot be applied to (int, int) aus


----------



## SlaterB (15. Okt 2008)

tja, von den Parametern her muss es schon passen,

da gibt es nun verschiedene Varianten,
du könntest die Methode als 

public static int [] quicksort (int [] feld1, int anfang, int ende ){ ´

deklarierten und dir Zeile 4 + 5 in deinem Code sparen,
dann muss der Aufrufer anfang und ende korrekt setzen

dass du dann in Zeile 26 und 29 drei Parameter übergeben musst versteht sich von selbst,

bei den Kenntnissen von so einfachen Dingen wie Methodenaufrufen und Parametern sehe ich aber allgemein schwarz..


----------



## Big ? (15. Okt 2008)

ah cool danke...ach naja schwarz würd ich da nich sehen, ich lern ja noch


----------

