AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ich bitte um Erklärung eines Quellcodes

Ein Thema von Tabriel · begonnen am 16. Jun 2009 · letzter Beitrag vom 17. Jun 2009
 
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#5

Re: Ich bitte um Erklärung eines Quellcodes

  Alt 16. Jun 2009, 21:08
Reformatiert/korrigiert (kein Wunder, dass du ihn so nicht verstehtst):

Delphi-Quellcode:
Procedure TWortListe.Quick; //verbessert?
begin
  //ich denk mal die sind globale Zähler oder Felder, die hier zurückgesetzt werden
  Vergleiche :=0;
  Swaps :=0;
  //PegelStart ist eine Prozedur, deren Implementierung du nicht gepostet hast, siehe Anmerkung zu Pegel
  PegelStart(round(Listenlaenge*log2(Listenlaenge)));
  //erster Parameter: "untere" sortierte Grenze, zweiter: "obere" sortierte Grenze
  //die anderen zwei Parameter zählen wohl die Vergleiche und Tauschoperationen mit (starten hier mit 0)
  quicksort(1,Listenlaenge,vergleiche,swaps);
end;

Procedure TWortListe.Quicksort(anfang, ende: Cardinal; var act, sw : Cardinal);
var
  linkerzeiger, rechterzeiger : Cardinal; //imho recht sinnlose lokale Kopien der Parameter
  mitte : string;
begin
  linkerzeiger := anfang;
  rechterzeiger := ende;
  //auch wieder irgendwas mit ner Anzeige, die die Mitte, des Sortierbereichs zeigt?
  mitte := Kollektion[(linkerzeiger+rechterzeiger)div2];
  Pegel.Position := Vergleiche; //Hier taucht der Pegel nochmal auf - vielleicht eine Progessbar o.ä.?

  while(Kollektion[linkerzeiger]<mitte) do //warum zum Henker ein Stringvergleich?
  begin
    linkerzeiger := linkerzeiger+1;
    //Was ist act - Act ist ein var Parameter der Funktion - aus deinem oberen Aufruf raus zu schließen die Tauschanzahl
    inc(act);
  end;


  while(Kollektion[rechterzeiger]>mitte) do //siehe Schleife davor
  begin
    rechterzeiger := rechterzeiger-1;
    inc(act); //Hier habe ich nochmal das selbe Problem
  end;

  if linkerzeiger <= rechterzeiger then //joa, der restliche Quicksort halt
  begin
    //ahh weil du eine Art Stringliste sortierst, damit ist dann auch Mitte klar (Privotelement)
    Tauschen(Kollektion[linkerzeiger],Kollektion[rechterzeiger]);
    linkerzeiger := linkerzeiger + 1;
    rechterzeiger := rechterzeiger - 1;
    inc(Swaps);
    inc(act);
  end; (*if*)
until rechterzeiger < linkerzeiger; //kompiliert das, so ohne Repeat?


  if anfang < rechterzeiger then
    quicksort(anfang, rechterzeiger, Vergleiche, swaps); //Hier habe ich wieder ein PRoblem mit dem Aufruf Quciksort
  if linkerzeiger < ende then
    quicksort(linkerzeiger,ende,Vergleiche,swaps); //Klammer = deine Parameter beim Aufruf, wie oben halt

end; (*quicksort*)
Insgesamt viel
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 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