wir arbeiten derzeit in der Schule mit PASCAL und die Hausaufgabe ist in eigenen Worten das Sortieren durch einfügen zu erklären. Schon passiert Nun möchte ich gerne ne Zusatzaufgabe machen, also schonmal eine Prozedur dafür aufbauen (nit zum schleimen sondern ich liebe die Informatik ^^) und bräuchte dort mal Hilfe.
Ich habe ein Taschenbuch der Algorithmen (von der TU-Dortmund) und dort ist dies eigentlich ganz schön beschrieben, allerdings habe ich noch ein Problem.
Es geht darum, mit dem Sortieren per Einfügen ein Regal mit Büchern zu ordnen. Jedes Buch hat eine Zahl. Nun ist hier ein kleiner Code im Buch der soweit ich das erkenne in C++ geschrieben ist:
Code: Alles auswählen
1 Gegeben: A:Feld mit n Einträgen;
2 for i:=2 to n do
// ordne Buch an Position i durch Verschiebung ein
3 Hand:=A[j]; //nimm aktuelles Buch in die Hand
4 j:=i-1;
// solange korrekte Position des aktuellen Buchs noch nicht erreicht
5 while j>=1 annd A[j]>Hand do
6 A[j+1]:=A[j]; // schiebe Buch an die Position j nach rechts
7 j:=j-1;
8 endwhile
9 A[j]:=Hand // füge aktuelles Buch an der richtigen Stelle ein
10 endfor
So, nun habe ich es soweit in Pascal
Code: Alles auswählen
PROGRAM hausaufgabe;
CONS n=5 (*den Wert 5 hab ich mir jetzt einfach mal so genommen*);
VAR A:ARRAY [1..n] OF INTEGER;
hand,i,j:INTEGER;
PROCEDURE sort;
BEGIN
i:=2;
hand:=A[i];
j:=i-1;
WHILE j>=1 AND A[j]>hand DO
BEGIN
A[j+1]:=A[j];
j:=j-1;
END
A[j]:=hand;
END;
BEGIN
sort;
END.
Einzige Idee dir mir grad noch kommt wäre:
Code: Alles auswählen
PROGRAM hausaufgaben_aufgabeb;
CONS n=20;
VAR A:ARRAY [1..n] OF INTEGER;
j,i,:INTEGER;
PROCEDURE insertion_sort;
BEGIN
j:=1;
i:=2;
REPEAT
IF A[i]<A[j]
THEN BEGIN
REPEAT
IF A[i]<A[j]
THEN BEGIN
hand:=A[j];
A[j]:=A[i];
A[i]:=hand
j:=j-1;
i:=i-1;
END
ELSE BEGIN
j=0;
i=1;
END
UNTIL j=0 AND i=1;
END
j:=j+1;
i:=i+1;
UNTIL j=n-1 AND i=n;
END;
BEGIN
insertion_sort;
END.