Jumpsort
spacer
Autor Nachricht
seerosengiesser
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 09.01.12 23:06 
Hallo,

ich habe versucht einen Jumpsort zu Programmieren.

ausblenden Delphi-Quelltext markieren
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 user profile iconMartok: Delphi-Tags hinzugefügt
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mo 09.01.12 23:13 
Hallo und :welcome: im Forum!

user profile iconseerosengiesser hat folgendes geschrieben Zum zitierten Posting springen:
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?

user profile iconseerosengiesser hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext markieren
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?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
seerosengiesser Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
EE-Maler
Beiträge: 1754
Erhaltene Danke: 62

Windows XP
Delphi (2005 Bug Edition), Java (Eclipse), Haskell (ghci), C++ (Visual Studio 2010, Qt Creator)
BeitragVerfasst: Di 10.01.12 22:08 
user profile iconseerosengiesser hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
a broken heart is like a broken window - it'll never heal
Jen, [this computer] is infected. If this was a human being, I'd shoot it in the face. (IT Crowd)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 452
Erhaltene Danke: 6



BeitragVerfasst: 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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
seerosengiesser Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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..
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
seerosengiesser Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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:
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 11.01.12 12:40 
user profile iconseerosengiesser hat folgendes geschrieben Zum zitierten Posting springen:
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. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home