tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
2508
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    Moin Freunde des logischen Denkens!

    Musste gerade für ein Programm in der Uni den Bubblesort Algorithmus etwas modifizieren. Mein Problem ist, dass er funktioniert. Das Array wird sortiert, nur leider zu schnell. Hab noch ne Schleife drum, damit ich für Zeitmessungen ein vernünftiges Ergebnis in Millisekunden bekomme. Vielleicht könnte ihr mal gucken, wo irgendwo was unstimmig ist.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    [COLOR=#000000][B]Procedure[/B][/COLOR] BubbleSort( Elemente : Word; KopieArray : TArray; [COLOR=#000000][B]var[/B][/COLOR] ErgebnisArray : TArray);
    [COLOR=#000000][B]Var[/B][/COLOR]
      Marke, i, MarkeTemp,h : Word;
      MarkeFlag : Boolean;
      SArray : TArray;
    [COLOR=#000000][B]Begin[/B][/COLOR]
     [COLOR=#000000][B]for[/B][/COLOR] h := 1 [COLOR=#000000][B]to[/B][/COLOR] Durchlauf [COLOR=#000000][B]do[/B][/COLOR]
     SArray := KopieArray;
     [COLOR=#000000][B]Begin[/B][/COLOR][Color=#ff0000]<-[/color]
      Marke := 1;
      [COLOR=#000000][B]repeat[/B][/COLOR]
        MarkeFlag := True;
        i := Elemente;
        [COLOR=#000000][B]while[/B][/COLOR] i > Marke [COLOR=#000000][B]do[/B][/COLOR]
         [COLOR=#000000][B]Begin[/B][/COLOR]
           [COLOR=#000000][B]if[/B][/COLOR] SArray[i-1] > SArray[i] [COLOR=#000000][B]then[/B][/COLOR]
            [COLOR=#000000][B]Begin[/B][/COLOR]
              MarkeTemp := SArray[i];
              SArray[i] := SArray[i-1];
              SArray[i-1] := MarkeTemp;
     
              MarkeFlag := False;
              MarkeTemp := i;
            [COLOR=#000000][B]End[/B][/COLOR];
           dec(i);
         [COLOR=#000000][B]End[/B][/COLOR];
        Marke := MarkeTemp;
      [COLOR=#000000][B]until[/B][/COLOR] MarkeFlag;
     [COLOR=#000000][B]End[/B][/COLOR];
     ErgebnisArray := SArray;
    [COLOR=#000000][B]End[/B][/COLOR];
    Das Ganze flutscht unter TP6.
    Elemente = Elemente im Array
    Durchlauf = Schleifendurchläufe
    KopieArray = Bei sortiertem Array, wird wieder das unsortierte Array genommen.
    Danke schonmal im vorraus.
    Geändert von Patrick Kamin (12.12.02 um 21:49 Uhr)
     
    --
    GNU/Linux - Weil man echte Freunde nicht kaufen kann

  2. #2
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Was heisst genau "zu schnell"? Wenn Du das alles etwas rauszögern willst, kannst Du doch überall noch irgendwas passendes einbauen (Sleep, blinde Schleifen, ...). Das ist dann zwar nicht mehr ganz im Sinne des Erfinders, aber sollte helfen.

    Ansonsten mach doch einfach das Array grösser, dann dauert das ganze logischerweise auch etwas länger.

    Nachtrag:
    Ich weiss nicht, ob es das bei Turbo Pascal auch schon gibt, aber evtl. hilft Dir ein Timer weiter. Möglicherweise kannst Du sowas irgendwie per Windows API hinbiegen.
     

  3. #3
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    Vielleicht sieht noch jemand was.
    Jo ich
    Da verrutscht man mal mit einem Begin und denkt schon, man hat nen neuen superschnellen Sortieralgorithmus gefunden.


    Um den ganzen Vorgang etwas heraus zuzögern, habe ich ja schon ne Schleife um den Algorithmus gepackt, damit man die Geschwindigkeit messen kann. Das Problem ist, wenn ich die Wiederholung auf 2000 stelle, dann brauchen andere Soriteralgorithmen wie Shakersort etc. ca 15 Sekunden, aber Bubblesort bleibt unter einer Sekunde.

    Und ich will einfach keinen Fehler finden, hab schon stundenlang auf den Quellcode geguckt und es kann nur an der Prozedur liegen.

    Also es geht mir nicht um die künstliche Verzögerung.
    Geändert von Patrick Kamin (12.12.02 um 21:48 Uhr)
     
    --
    GNU/Linux - Weil man echte Freunde nicht kaufen kann

Ähnliche Themen

  1. Bubblesort-Ausgabe
    Von barosch im Forum Java Grundlagen
    Antworten: 3
    Letzter Beitrag: 25.10.08, 13:26
  2. Suche Geschichte von Bubblesort..
    Von KleinesNadine im Forum Java
    Antworten: 3
    Letzter Beitrag: 15.09.07, 12:43
  3. Wann Rekursion anwenden? (z.B. Bubblesort)
    Von FireFlow im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 03.05.05, 01:40
  4. Frage zu einem Bubblesort
    Von glitterangel im Forum Delphi, Kylix, Pascal
    Antworten: 6
    Letzter Beitrag: 10.04.05, 20:14
  5. Bubblesort...wie?
    Von tremere im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 10.01.05, 12:47