Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bubblesort.... (https://www.delphipraxis.net/116095-bubblesort.html)

Razor90 23. Jun 2008 12:50


Bubblesort....
 
Hallo! Ich möchte in einer Tabelle jahre und Monate aufsteigend ordnen. Dazu will ich Bubblesort verwenden.
Ich habe jetzt jedoch das Problem, dass die Records(Arrays) nicht getauscht werden, sondern beide mit einmal identisch sind, d.h. alle Werte in der Tabelle sind gleich. Hier ist der Quelltext...könnt ihr mir vll helfen?
Delphi-Quellcode:
for o:=1 to aa do
        begin
        for k:=1 to aa-o do begin
        if (Datei[k].Jahr>=Datei[k+1].Jahr) then begin
        if (Datei[k].Monat>Datei[k+1].Monat)
        then begin
        hilf:=Datei[k+1];
        Datei[k+1]:=Datei[k];
        Datei[k]:=hilf;
        end;
        end;
        end;
        end;
        for p:=1 to aa do begin
         form1.stringgrid1.Cells[0,p]:=IntToStr(Datei[aa].Jahr);
         form1.stringgrid1.cells[1,p]:=IntToStr(Datei[aa].Monat);
         

end;

  end;
THX und mfg

BullsEye 23. Jun 2008 12:56

Re: Bubblesort....
 
Delphi-Quellcode:
hilf:=Datei[k+1];
Datei[k+1]:=Datei[k];
Datei[k]:=hilf;
durch
Delphi-Quellcode:
hilf:=Datei[k];
Datei[k]:= Datei[k+1];
Datei[k+1]:=hilf;
ersetzten

Razor90 23. Jun 2008 12:58

Re: Bubblesort....
 
Hab ich gemacht...gleiches Ergebnis wie vorher....woran könnte das denn liegenn??? Jmd ne Idee?

mkinzler 23. Jun 2008 13:01

Re: Bubblesort....
 
Dreieckstausch ist Dreieckstausch, egal in welche Richtung man tauscht.

hoika 23. Jun 2008 13:03

Re: Bubblesort....
 
Hallo,

der normale BubbleSort sieht so aus

Delphi-Quellcode:
for i:=1 to aa do
begin
  for j:=i+1 to aa do
  begin
    jetzt i und j vergleichen

Heiko

Sharky 23. Jun 2008 13:07

Re: Bubblesort....
 
Hai,

wenn es um Sortierungen geht, da hat Daniel mal ein Tutorial geschrieben.

Razor90 23. Jun 2008 13:09

Re: Bubblesort....
 
immernoch das gleiche...hab jetzt den code verändert, aba immernoch sind die werte gleich...
Delphi-Quellcode:
for o:=1 to aa do begin
        for k:=1 to aa-o do begin
        if (Datei[k].Jahr>Datei[k+1].Jahr) {and
         (Datei[k].Monat>Datei[k-1].Monat)} then begin
        hilf:=Datei[k];
        Datei[k]:= Datei[k+1];
        Datei[k+1]:=hilf;
        end;
        end;



        end;
        for p:=1 to aa do begin
         form1.stringgrid1.Cells[0,p]:=IntToStr(Datei[aa].Jahr);
         form1.stringgrid1.cells[1,p]:=IntToStr(Datei[aa].Monat);
end;

Razor90 23. Jun 2008 13:52

Re: Bubblesort....
 
keiner mehr ne idee?

hoika 23. Jun 2008 14:03

Re: Bubblesort....
 
Hallo,

wenn du mein Posting nicht willst ...

Delphi-Quellcode:
i:= 1 to max
  j:= i+1 to max
nicht j:= 1
und nicht aa und aa-o !!!


Heiko

Razor90 23. Jun 2008 14:18

Re: Bubblesort....
 
so...habs jetzt so gemacht wie du es gesagt hast...aba jetzt sind wieder alle werte 0

DelphiKlaus 23. Jun 2008 14:24

Re: Bubblesort....
 
Hey,

so sollte es funktionieren (p statt aa):

Delphi-Quellcode:
   for p:=1 to aa do
    begin
       form1.stringgrid1.Cells[0,p]:=IntToStr(Datei[p].Jahr);
       form1.stringgrid1.cells[1,p]:=IntToStr(Datei[p].Monat)
    end;
Viele Grüße

Klaus

Razor90 23. Jun 2008 15:28

Re: Bubblesort....
 
Danke DelphiKlaus das wars...das war die Lösung!
Jetzt find ich es nur komisch das er nicht nach beiden Kriterien sortiert, sondern nur nach Jahr, d.h. Monate sind ungeordnet... Hat da vll jmd noch nen Tipp? Ich vermute das es am
Delphi-Quellcode:

if aa>1 then begin
 for o:=1 to aa do begin
        for k:=1 to aa-o do begin
          if (Datei[k].Jahr>=Datei[k+1].Jahr) and
             (Datei[k].Monat>=Datei[k+1].Monat) then begin
             hilf:=Datei[k];
             Datei[k]:= Datei[k+1];
            Datei[k+1]:=hilf;

        end;
      end;
     end;
   end;

       for p:=1 to aa do begin
         form1.stringgrid1.Cells[0,p]:=IntToStr(Datei[p].Jahr);
         form1.stringgrid1.cells[1,p]:=IntToStr(Datei[p].Monat);
end;
liegt. Danke

DelphiKlaus 23. Jun 2008 16:58

Re: Bubblesort....
 
Versuch es mal so:

Delphi-Quellcode:
for o:=1 to aa do
  for k:=1 to aa-o do
    if (Datei[k].Jahr>Datei[k+1].Jahr) or
       ((Datei[k].Jahr=Datei[k+1].Jahr) and
        (Datei[k].Monat>Datei[k+1].Monat)) then
      begin
        hilf:=Datei[k];
        Datei[k]:= Datei[k+1];
        Datei[k+1]:=hilf;
      end;

for p:=1 to aa do
  begin
    form1.stringgrid1.Cells[0,p]:=IntToStr(Datei[p].Jahr);
    form1.stringgrid1.cells[1,p]:=IntToStr(Datei[p].Monat);
  end;
Viele Grüße

Razor90 23. Jun 2008 19:15

Re: Bubblesort....
 
wieder voll ins schwarze :P DANKE Delphiklaus!!!! mfg Razor


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz