- Start: L=0, Hi=8, A[Lo]=3, A[Hi]=5, Mid=4
- repeat
- nach den beiden while-Schleifen: Lo=1, Hi=5, A[Lo]=7, A[Hi]=2
- if-Bedingung ist true, also tauschen und Lo/Hi weiterbewegen: Lo=2, Hi=4, A[Lo]=8, A[Hi]=4
- until-Bedingung ist false, also weiter nach repeat
- beide while-Schleifen werden nicht durchlaufen, da A[Lo]{8} < Mid {4} und A[Hi] {4} < Mid {4} fehlschlagen
- if-Bedingung ist immer noch true, also tauschen und weiterbewegen wie oben: Lo=3, Hi=3, A[Lo]=1, A[Hi]=1
- until schlägt immer noch nicht zu, also wieder weiter nach repeat
- A[Lo] {1} ist kleiner als Mid {4} und die erste while-Schleife setzt Lo=4, die zweite while ändert nichts
- Die if-Bedingung greift nun nicht, aber dafür das until (die beiden schließen sich ja gegenseitig aus)
- Da Hi {3} > iLo {0} ist, wird QuickSort für [0, 3] aufgerufen
- Gleiches gilt für Lo {4} < iHi {8}
Nochmal langsam !
Lo=3, Hi=3, A[Lo]=1, A[Hi]=1 also,
A[Lo]< Mid => Inc(Lo) , Lo=4, A[Lo]=8
A[Hi]> Mid => Hi=3, A[Hi]=1
Until greift zu, somit wird Quicksort rekursiv aufgerufen...
Die Zahlenfolge bleibt:
3-2-[4]-1-(8)-7-6-9-5
also immer noch nicht richtig...
Iwas verstehe ich nicht ?
Edit: Noch eine Frage? Woher weiss das Programm, dass Lo links und Hi rechts sein soll?