Moin Brutus,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS.
Zitat von
Brutus:
Ihr könnt mir ruhig sagen wenn das zu dumm ist was ich frage - man lernt aus fehlern
Es gibt keine dummen Fragen, nur dumme Antworten.
Wenn man irgendetwas nicht weiss, oder sieht, dann ist das nun einmal so.
Das passiert ja nun wirklich jedem.
So, ich hab' mir mal Deine Sourcen angesehen, und ausprobiert. (ich hab' mir die Daten nur mal senkrecht ausgeben lassen)
Was mir dabei als erstes augefallen ist:
Beim Minsort bekam ich als Ergebnis u.a. eine -1 angezeigt, was ja nun wirklich nicht sein kann.
Der Bubblesort sortierte zwar auf den ersten Blick richtig, aber enthielt auch einen Wert, der in den Ursprungsdaten gar nicht enthalten war.
Der Minsort enthält auf jeden Fall schon einmal bei der Ausgabe der Daten einen Fehler:
Die Schleife muss von 0 bis 9 und nicht von 1 bis 10 laufen, da ja f von 0 bis 9 deklariert ist, Du aber die Indizes von 1 bis 10 ansprichst, und somit bei f[10] den Wert ausgegeben bekommst, der zufällig gerade an der Speicherstelle steht.
Gemeinerweise führt das nicht zwangsläufig zu einem Fehler, wenn die Bereichsprüfung (Compiler Direktive $R) nicht aktiviert ist.
Anschliessend erhielt ich aber immer noch einen negativen Wert in der Liste, was darauf hinwies, dass irgendwo immer noch ein Index verwendet wird, der ausserhalb des zulässigen Bereiches liegt.
Beim Minsort solltest Du, als erster Ansatz, mal die Schleifen korrigieren
FOR a:= 0 TO 8 DO
und
FOR i:= a+1 TO 9 DO
dann wäre zumindest schon einmal das Problem mit den falschen Indizes vom Tisch.
Den Minsort Algorithmus kenne ich jetzt leider nicht. Könntest Du den mal beschreiben?
Vielleicht hätte ich dann auch eine Chance, festzustellen, was bei der Umsetzung schiefgegangen ist.
Auffällig ist nur, dass mehrmaliges Ausführen des Minsort irgendwann zu einer korrekten Sortierung führt.
Beim Bubblesort hab' ich den Fehler gefunden:
Statt
FOR i:= 0 TO e-1 DO
muss es
FOR i:= 0 TO e-2 DO
heissen, da Du ansonsten bei
IF f[i]>f[i+1] THEN
für i = 9 wieder einen Index ausserhalb des gültigen Bereiches erhältst.