Zuerst könnte man ja mal auf die saudumme Idee kommen und in den Projektoptionen die Indexprüfung aktivieren.
Grüß Dich himitsu,
mhh, ja, kannste nicht wissen .. ich hab nur Delphi 5
da is das wohl noch nich vorgesehn (s. Screenshot).
Hab jetzt einfach nochmal ein wenig durchgesteppt (obwohl .. bei 100x F7 wirste auch langsam ...
)
naja
und jedenfalls mal n-1 gesetzt - (ob das jetzt algorithmisch sinnvoll/richtig ist, weiß ich nicht.)
Aber wenigstens verschwindet nicht mehr die 9 und die Null taucht nur 1x auf.
Delphi-Quellcode:
procedure SelectionSort( A : Integer );
var
n, i, links, min : Integer;
temp : Integer;
begin
n := 10 ; // anzahl der Kriterien
links := 0 ;
while links < n do
begin
min := links;
for i := links + 1 to n [b]-1[/b] 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;
Allerdings find ich nicht, daß die Vergleiche sinnvoll stattgefunden haben....
SortierListNR (neu sortiert); TAB OriginalPosition ; TAB Kriterium
3 0 80171
0 1 63091
1 2 487258
2 3 3735
7 4 24149
4 5 24149
5 6 24149
6 7 5863
9 8 242816
8 9 24039
denn sortiert is da irgendwie nix:
SortierListNR; TAB OriginalPosition (neue Pos) ; TAB Kriterium (neue Pos)
0 1 63091
1 2 487258
2 3 3735
3 0 80171
4 5 24149
5 6 24149
6 7 5863
7 4 24149
8 8 242816
9 9 24039
wenn ich das hiermit ausgebe.
Delphi-Quellcode:
for i := 0 to 9 do
begin
a := form1.DynARray[i].SortListNumber;
memo3.lines[a] :=(
inttostr(form1.DynARray[i].SortListNumber) + #9 +
inttostr(form1.DynARray[i].Originalnummer) + #9 +
inttostr(form1.DynARray[i].Kriterium) + #9 + ''
);