So sortiert man einfach (aber langsam):
A ist das Array, das die zu sortierenden Zahlen enthält und N ist die Anzahl der Zahlen. A[0] ist das erste Element.
Wir machen nun Folgendes (A=[5,3,2,8]):
1. Wir definieren uns eine sortierte Teilliste, die von A[0] bis A[j] geht. j ist zunächst 0, denn wir können sagen, das eine Liste, die nur aus einem Element besteht, sortiert ist. (Beispiel: Teilliste = [5], und die ist ja sortiert)
2. Nacheinander werden wir das jeweils nächste Element E in die Teilliste einfügen, das die Liste wieder sortiert ist.
3. Wenn wir mit allen Elementen fertig sind, ist die Liste sortiert.
Der erste Ansatz sieht also so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Procedure Sortiere (A : TArray; N : Integer); Var i : Integer;
Begin j := 0; For i := 1 to N-1 do FuegeSortiertEin (A, i-1, A(i]); End; |
So, jetzt kümmern wir uns um das 'FuegeSortiertEin'. Diese Prozedur soll ein Element in eine Liste an der richtigen Position einfügen. Wenn es also größer als das höchste Element ist, dann muss man es hinter das höchste Element packen, ist es größer als das zweithöchste Element, dann muss man das höchste um eins nach hinten verschieben und das Element da reinschreiben etc.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Procedure FuegeSortiertEin (A : TArray; J, E : Integer); Begin While (J>0) and (A[J]>E) do begin A[J+1] := A[J]; dec (J); End; A[J] := E; End; |
Na denn, dann. Bis dann, denn.