Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
|
Re: Fehler im Sortier-Algorythmus
7. Okt 2004, 17:05
Hi Martin,
ich habe mir Daniels Prozedur aus dem Sortieralgorithmen-Tut ausgeliehen, und die Funktion ein bisschen umgeschrieben. Jetzt werden die Daten absteigend sortiert:
Delphi-Quellcode:
procedure TForm1.NewBubbleSort(tStr: TStrings);
var i, j, n : Integer;
tag1, monat1, jahr1, tag2, monat2, jahr2: integer;
Data: array of String;
s, temp: String;
begin
SetLength(Data, tStr.Count);
for i := 0 to tStr.Count-1 do
Data[i] := tStr[i];
n := tStr.Count-1;
for i:= n downto 1 do
begin
for j:= 1 to i do
begin
s:=Data[j];
delete(s,1,pos('-',s));
delete(s,1,pos('-',s));
jahr1:=strtoint(s);
{Der Monat wird aus 1 herausgeschnitten}
s:=Data[j];
delete(s,1,pos('-',s));
delete(s,pos('-',s),length(s));
monat1:=strtoint(s);
{Der Tag wird aus 1 herausgeschnitten}
s:=Data[j];
delete(s,pos('-',s),length(s));
tag1:=strtoint(s);
{Das Jahr wird aus 2 herausgeschnitten}
s:=Data[j-1];
delete(s,1,pos('-',s));
delete(s,1,pos('-',s));
jahr2:=strtoint(s);
{Der Monat wird aus 2 herausgeschnitten}
s:=Data[j-1];
delete(s,1,pos('-',s));
delete(s,pos('-',s),length(s));
monat2:=strtoint(s);
{Der Tag wird aus 2 herausgeschnitten}
s:=Data[j-1];
delete(s,pos('-',s),length(s));
tag2:=strtoint(s);
{Jahr vergleichen}
if jahr1 > jahr2 then
begin
temp := Data[j-1];
Data[j-1] := Data[j];
Data[j] := temp;
end;
if jahr1 = jahr2 then
begin
if monat1 > monat2 then
begin
temp := Data[j-1];
Data[j-1] := Data[j];
Data[j] := temp;
end;
if monat1 = monat2 then
begin
if tag1 > tag2 then
begin
temp := Data[j-1];
Data[j-1] := Data[j];
Data[j] := temp;
end;
end;
end;
end;
end;
for i := 0 to tStr.Count-1 do
ListBox2.Items.Add(Data[i]);
end;
Hoffe es passt.
Greetz
alcaeus
Andreas B. Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
|