grüß Euch,
mhh, habb jetztmehrmals was probiert ...
v.a. mit dem untenstehenden Code:
[...]
und nun mal richtig
Delphi-Quellcode:
procedure SelectionSort( var A : TArray<Integer> );
var
n, i, links, min : Integer;
temp : Integer;
begin
n := High( A );
links := Low( A );
while links < n do
begin
min := links;
for i := links + 1 to n do
begin
if A[ i ] < A[ min ] then
min := i:
end;
if links <> min then
begin
temp := A[ links ];
A[ links ] := A[ min ];
A[ min ] := temp;
end;
links := links + 1;
end;
end;
ich hab A[] mal gegen DYNarray ausgetauscht und Links NUll gesetzt, weil das das niedrigste Feld im Array ist.
Delphi-Quellcode:
procedure SelectionSort( A : Integer ); // hab die direkte Übergabe momentan gestrichen - war mir zu kompliziert.
var
n, i, links, min : Integer;
zahl1, zahl2, temp : Integer;
begin
n := form1.Bildmax;
links := 0 ;
while links < n do
begin
min := links;
for i := links + 1 to n do
begin
if Form1.DynARray[ i ].Kriterium < Form1.DynARray[ min ].Kriterium then
min := i;
end;
if links <> min then
begin
temp := Form1.DynARray[ links ].SortListNumber;
Form1.DynARray[ links ].SortListNumber := Form1.DynARray[ min ].SortListNumber;
Form1.DynARray[ min ].SortListNumber := temp;
end;
links := links + 1;
end;
end;
So (Kriterium wird in der Position NICHT VERSCHOBEN !!!! nur die SortListNummer!!):
Durchgeang 1 : Original reihenfolge VOR dem Sortieren
[Code]
SortListNummer; OriginalPlatzNummer; Kriterium
0 0 80171
1 1 63091
2 2 487258
3 3 3735
4 4 24149
5 5 24149
6 6 24149
7 7 5863
8 8 242816
9 9 24039
___________________________
Nach Sortieren: (1x geklickt)
0 0 80171
0 1 63091
1 2 487258
2 3 3735
3 4 24149
4 5 24149
5 6 24149
6 7 5863
7 8 242816
8 9 24039
-------------------------
So kommt jetzt die zweite 0 her? und warum fehlt die 9?