Guten Morgäään, (
oh, man ... die halbe Nacht steppe ich nun schon durch diese paar lächerlichen Zeilen dämlichen Code - *rote Augen reib*)
derzeit weiß ich nicht, wie ich das besser beschreiben soll (müde).
Ich möchte mit dem SelectionSort Algorithmus mein Array sortieren.
Dazu hab ich mir eine zweite "Indexvariable" implemetiert:
SortListNumber.
Nur diese wird verändert - nicht die ganzen Felderinhalte verschoben.
so in ner andern Funktion ist Form1.DynARray[J].SortListNumber fortlaufend, incrementiert (Felder 0 bis 9 sind belegt mit "int" 0 bis 9 )
Doch aus irgendwelchen Gründen tauchen nachher, wenn ich später mal
for i := 0 to Form1.MyItemMax - 1 do
durch gehe sind manche Zahlen in SortListnumber (immer wieder, reproduzierbar ) 3575 statt 9 oder 24145 statt 4, ...
Bsp: 8,5, 7, 3575 , 3, 24145,2 ,0 , 1 , 6.
wenn ich die Schleife nochmaldurchgehe werden auch die anderen Ziffern nacheinander durch 24145 ersetzt....
d.h. der holt die wohl irgendwo aus dem Speicher.
Aber wo???
Form1.DynARray[i].MyItem;
Delphi-Quellcode:
procedure TDateienFORM.SORTButtonClick(Sender: TObject);
Var
k, tmp, HHH, maxi, i, j, : Integer;
begin
maxi := Form1.MyItemMax; // verwendete/belegte Felder vom DynArray [0..1000]
for i := 0 to maxi - 1 do
begin
hhh := Form1.DynARray[i].MyItem; // MyItem => zu vergeleichendes Feld
k := i;
for j := i+ 1 to maxi - 1 do begin // +1
if Form1.DynARray[J].MyItem < hhh then
begin
k := j;
hhh := Form1.DynARray[J].SortListNumber;
end;
end;
Form1.DynARray[k].SortListNumber := Form1.DynARray[i].SortListNumber;
Form1.DynARray[i].SortListNumber := hhh;
end;
end;
die Algorithmus-Variablennamen (TMP, hhh, , k) sind leicht abgewandelt von dem Algorithmus, den ich irgendwann mal im Web gefunden jab. Quelle unbkeannt. Aber er müßte mit dem auf Wikipedia gefundenen Pseudocode identisch sein.
https://de.wikipedia.org/wiki/Selectionsort (bin das vergleichend durchgegangen)
Sieht jemand meinen Denkfehler?
Danke - entschuldigt bitte meine Problem-Beschreibung. Bin noch Delphi-newbie.