The content below is subject to my Conditions of Use!
(The link opens a new window.)
Der folgende Inhalt unterliegt meinen Nutzungsbedingungen!
(Der Link öffnet ein neues Fenster.)
I developed this algorithm to sort arrays or doubly-linked lists of data, becaue I wanted a really powerful and effective one. It is possible that it already exists under a different name — but I´ve not come across it neither in my university study nor in any book, so it might also be new. Ich habe diesen Algorithmus entwickelt, um Arrays oder zweifach verkettete Listen zu sortieren, da ich einen wirklich starken und effektiven wollte. Möglicherweise gibt es ihn schon unter einem anderen Namen — ich habe ihn aber weder in meinem Hochschulstudium noch in Büchern jemals gesehen, also ist er vielleicht doch neu.
Let´s say we want to sort this array.
0 1 2 3 4 5 6
C B G D F E A
Sagen wir mal, wir wollen dieses Array sortieren.

We put a finger at the leftmost element, our min-value finger.
0 1 2 3 4 5 6
C B G D F E A
Wir setzen einen Finger auf das Element ganz links, unseren Kleinstwert-Finger.

Then we put a finger at the rightmost element, our max-value finger.
0 1 2 3 4 5 6
C B G D F E A
Dann setzen wir einen Finger auf das Element ganz rechts, unseren Höchstwert-Finger.

Are both in the wrong order - as in this case here - exchange them!
0 1 2 3 4 5 6
A B G D F E C
Sind beide in der falschen Reihenfolge - wie in diesem Fall hier - dann vertausche sie!

Now we are ready to scan the area between them with our middle finger. We start with the first element after the min-value finger.
0 1 2 3 4 5 6
A B G D F E C
Nun können wir den Bereich zwischen beiden mit unserem Mittelfinger abfahren. Wir beginnen mit dem ersten Element nach dem Kleinstwert-Finger.

We check for every middle finger value first if it is smaller than our min-value. If it is so, then we exchange the contents. Then we check if it is greater than our max-value. If so - as in this case here - we perform an exchange.
0 1 2 3 4 5 6
A B G D F E C
Wir prüfen für jeden Mittelfinger-Wert zuerst, ob er kleiner ist als unser Kleinstwert. Wenn dem so ist, vertauschen wir die Inhalte. Dann prüfen wir, ob er größer ist als der Höchstwert. Wenn das so ist - wie in diesem Fall hier - dann führen wir eine Vertauschung durch.

So now all three "fingered" elements are in the right order.
0 1 2 3 4 5 6
A B C D F E G
So daß nun alle drei "befingerten" Elemente in der richtigen Reihenfolge sind.

We continue ...
0 1 2 3 4 5 6
A B C D F E G
Wir fahren fort ...

until we ...
0 1 2 3 4 5 6
A B C D F E G
bis wir ...

have scanned all. Now the first element is guaranteed to be of the smallest value, and the last element has the greatest value. We can forget about both and repeat the whole process iteratively with the inner field.
0 1 2 3 4 5 6
A B C D F E G
alle geprüft haben. Das erste Element hat nun garantiert den kleinsten Wert, und das letzte den größten. Wir können beide abhaken und den gesamten Prozeß iterativ mit dem inneren Feld wiederholen.

This means that the min-value finger moves one position to the right, and the max-value finger one to the left.
0 1 2 3 4 5 6
A B C D F E G
Das bedeutet, daß der Kleinstwert-Finger eine Position nach rechts rückt, und der Höchstwert-Finger eine nach links.

Now the middle finger can scan again the area between both.
0 1 2 3 4 5 6
A B C D F E G
Der Mittelfinger kann nun wieder den Bereich zwischen beiden abfahren.

Most elements might already be in the right place ...
0 1 2 3 4 5 6
A B C D F E G
Die meisten Elemente sind wahrscheinlich schon an der richtigen Position ...

And those which are not, will be exchanged with the conflicting min-value or max-value.
0 1 2 3 4 5 6
A B C D F E G
Und die, die es noch nicht sind, werden mit dem entsprechenden Kleinst- bzw Höchstwert vertauscht.

Until after the last iteration the sorting is finished.
0 1 2 3 4 5 6
A B C D E F G
Bis nach der letzten Iteration das Sortieren abgeschlossen ist.
For the whole sorting process of the seven elements we took here:
  • 21 checks (comparison)
  • 3 exchanges
Für den gesamten Sortiervorgang der sieben Elemente haben wir hier benötigt:
  • 21 Vergleiche
  • 3 Austausche

Do you want to contact or support me?
(The link opens a new window.)
Möchtest du mich kontaktieren oder unterstützen?
(Der Link öffnet ein neues Fenster.)