Registriert seit: 5. Dez 2003
14 Beiträge
|
Re: Sortiermöglichkeiten ?!
7. Dez 2003, 21:37
Beim linearen Sortieren fängt der Sortierer unten an und läuft mit jedem Schritt eins weiter nach oben. Bei jedem Schritt schiebt er die derzeitige Zahl so lange nach unten, bis die nächste Zahl weiter unten kleiner/größer ist. Hört sich etwas seltsam an - ich demonstrier es an einem Beispiel:
Das ist die Liste: 9
1
3
7
4
2
6
Der erste Schritt betrifft die zweite Zahl von unten den 2er. Der wird so lange nach unten geschoben, bis er auf eine kleiner Zahl stößt - er wird unter den 6er geschoben:
9
1
3
7
4
6
2
Jetzt kommt die nächste Zahl dran: Die dritte von unten, also der 4er. Der wird unter den 6er geschoben, weil die 4 ja kleiner ist, bleibt aber dann dort weil sie größer ist als die 2:
9
1
3
7
6
4
2
Danach 9137642 - 9176432 - 9764321 - 9764321 - und das wars dann.
In meinem Quelltext sieht das so aus:
for i:= 1 to length(speicher) do
begin
hilf := speicher[i];
j:= i-1;
repeat
if hilf < speicher[j] then
begin
speicher[j+1] := speicher[j];
j := j-1;
end;
until hilf >= speicher[j];
speicher[j+1] := hilf;
end;
Kurze Erleuterung der Begriffe:
i,j,hilf: integer
speicher: der zu sortierende Array (ein dynamischer, deshalb fängt er bei 0 an)
Ich hoffe das hilft dir, hab dieses Jahr auch viel zu tun für Informatik ...viel Glück
|