Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Jumpsort
seerosengiesser - Mo 09.01.12 23:06
Titel: Jumpsort
Hallo,
ich habe versucht einen Jumpsort zu Programmieren.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| var i,j,stellemax,ende : integer; begin ende := 14; for I := 0 to ende -1 do begin stellemax:=0; for J := 1 to ende -1 do begin If (Zahlen.ZfZ[stellemax]<Zahlen.Zfz[j]) then begin if (stellemax <> j-1) then begin Zahlen.tausche(stellemax,j-1); end; stellemax := j; end; end; If(stellemax <> ende)then begin Zahlen.tausche(stellemax,ende); end; ende := ende-1; end; end; |
Er bricht immer ab an der Stelle des Tauschens, die Prozedur läuft allerdings bei anderen SOrtieralgorithmen.
Findet irgendjemand einen Fehler?
MfG Frederik Lentjes
Moderiert von
Martok: Delphi-Tags hinzugefügt
jaenicke - Mo 09.01.12 23:13
Hallo und :welcome: im Forum!
seerosengiesser hat folgendes geschrieben : |
Er bricht immer ab an der Stelle des Tauschens, die Prozedur läuft allerdings bei anderen SOrtieralgorithmen. |
Meinst du mit abbrechen, dass es einen Kompilierfehler gibt? Sprich, dass sich das Programm gar nicht erst erstellen lässt?
seerosengiesser hat folgendes geschrieben : |
Delphi-Quelltext 1:
| Zahlen.tausche(stellemax,j-1); | |
Ich rate einmal, dass diese Prozedur dazu dient den Inhalt zweier Variablen zu vertauschen. Nur übergibst du ja als zweites das Ergebnis einer Berechnung und keine Variable. ;-)
Was möchtest du denn mit der Zeile erreichen?
seerosengiesser - Mo 09.01.12 23:31
Doch das Programm lässt sich kompilieren aber es bricht ab wie bei einer Endlosschleife..die beiden werte die an die prozedur tausche sind nur die stellen im array wor sich die zu tauschenden werte befinden..aber sonst hattest du recht.
Xion - Di 10.01.12 22:08
seerosengiesser hat folgendes geschrieben : |
aber es bricht ab wie bei einer Endlosschleife.. |
Also bricht es garnicht ab? :P Meinst du mit bricht ab einen "Freeze", d.h. dass das Programm einfach nichtmehr reagiert?
In deinem gezeigten Code ist weder eine Endlosschleife noch ein blockierender Aufruf (höchstens in der Unterfunktion tausche), ich kann mir nicht erklären, wie dort ein "Freeze" entstehen kann.
ub60 - Mi 11.01.12 00:05
Das Array geht von 0 bis ende-1.
In Zeile 21 tauscht Du aber an Stelle ende, hier muss ende-1 hin.
ub60
seerosengiesser - Mi 11.01.12 11:06
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation mit der Meldung "Zugriffsverletzung bei Adresse 00465A80 in Modul Project2.exe. lesen von Adresse 00000017 aufgetreten.
dann kann ich abbrechen fortsetzen und hilfe..
das ist das was ich mit aqbbrechen meine..
seerosengiesser - Mi 11.01.12 11:33
Habe den Fehler gefunden..Das Array fängt bei 1 an und geht bis 15 und ich dachte es geht von 0 bis 14..Oh Man :roll: :oops:
jaenicke - Mi 11.01.12 12:40
seerosengiesser hat folgendes geschrieben : |
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation mit der Meldung "Zugriffsverletzung bei Adresse 00465A80 in Modul Project2.exe. lesen von Adresse 00000017 aufgetreten. |
Wenn du eine Fehlermeldung bekommst, dann schreib die bei deiner nächsten Frage, falls du wieder eine hast, doch bitte gleich dazu. Dann wäre das Problem nämlich gleich ziemlich klar gewesen. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!