Thema: Delphi Problem mit Bubbesort

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Problem mit Bubbesort

  Alt 24. Mai 2003, 16:27
So, ich habe für meine Datnebank einen Bubbelsort implementiert. Nur irgendwie macht er nicht so ganz, dass was er soll. Er sortiert nur bis zu Hälfte (Wenn er es tut. Die ersten datensätze sind noch sortiert.), und ab der Hälfte sind dann alle Datensätze identisch. Also so sieht das dann aus:
Zitat:
aa
bb
cc
dd
dd
dd
Ich benutze die Implementation von Daniel aus der Tutorialsparte.
Delphi-Quellcode:
procedure SwapIt(Record1, Record2: Trecord);
var
  TempRecord: Trecord;
begin
  TempRecord := Record1;
  Record1 := Record2;
  Record2 := TempRecord;
end;

procedure Sort;
var
  MyTypedFile : TTypedFile;
  Record1, Record2 : TRecord;
  s, s1, s2: String;
  i, j: Integer;
begin
  MyTypedFile := TTypedFile.Create(CutFilename(ParamStr(0))+'\'+DATAFILENAME);
  try
    for i := MyTypedFile.GetRecordsCount-1 downto 1 do
    begin
      for j := 2 to i do
      begin
        Record1 := MyTypedFile.GetRecord(j-1);
        Record2 := MyTypedFile.GetRecord(j);
        s1 := CreateLVCaption(j-1);
        s2 := CreateLVCaption(j);
        if s1 > s2 then
        begin
          SwapIt(Record1, Record2);
          MyTypedFile.ModifyRecord(Record1, j-1);
          MyTypedFile.ModifyRecord(Record2, j);
        end;
      s := Format('Datensätze werden sortiert: %d ...', [i]);
      SendDlgItemMessage(hApp, IDC_STATBAR, SB_SETTEXT, 1, Integer(@s[1]));
      ProcessMessages(hApp);
      end;
    end;
  finally
    MyTypedFile.Free;
    s := '';
    SendDlgItemMessage(hApp, IDC_STATBAR, SB_SETTEXT, 1, Integer(@s[1]));
  end;
end;
Ich sitze schon den ganzen Tag davor und finde den Fehler nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat