funktion teile(links, rechts) index := links von zeiger := links bis rechts-1 falls daten[zeiger] < daten[rechts] // daten[rechts] ist Pivot tausche(index, zeiger) index := index + 1 tausche(index, rechts) // Pivot an die Trennstelle setzen antworte index Tausche nur Elemente, die kleiner als Pivot sind. Dies funktioniert auch mit 1-2-1-2-3-2, ich habe es nachgerechnet. Außerdem habe ich ein Testprogramm geschrieben, das alle Feld-Belegungen bis zur Länge 8 systematisch durchprobiert (auch mit gleichen Elementen), um Sortieralgorithmen zu testen, und es funktioniert. Übrigens sind die Namen der Indizes index und zeiger unglücklich; ein Zeiger ist was anderes als ein Index (zumindest in C / C++ unterscheidet man zwischen diesen). (unterschreiben kannst du mit , was dann automatisch durch deinen Benutzernamen + Datum + Uhrzeit erstetzt wird.)