www.vorwissen.de
Ein Projekt von vorhilfe.de
Das gesammelte Wissen der Vorhilfe
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Pascal" - quicksort
quicksort < Pascal < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Pascal"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

quicksort: delphi
Status: (Frage) beantwortet Status 
Datum: 11:08 Mo 14.02.2005
Autor: Eirene

hallo!!!
also ich muss in der Schule ein Programm programmieren mit quicksort
als kleine Hilfe hat uns der Lehrer folgende Seite empfohlen : http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/quick/quicken.htm
kann mir bitte jemand helfen das zu programmieren und mir das auch ausführlich erklären, da ich das nicht so gut kann??

Außerdem hab ich im Internet noch ein Quelcode gefunden das ziemlich gut ist, meine ich
Function quicksort(s,e)
  i=s
  j=e
  x=feld((i+j)/2)
  Repeat
    While feld(i)<x
      i=i+1
    Wend
    While feld(j)>x
      j=j-1
    Wend
    If i<=j Then
      tmp=feld(i)
      feld(i)=feld(j)
      feld(j)=tmp
      i=i+1
      j=j-1
    End If
  Until i>j
  If j>s Then quicksort(s,j)
  If i<e Then quicksort(i,e)
End Function


danke

        
Bezug
quicksort: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:08 Mo 14.02.2005
Autor: Lizard

Hallo,

> als kleine Hilfe hat uns der Lehrer folgende Seite empfohlen :
> http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/quick/quicken.htm

Gefällt mir als Einführung nicht so gut. Schau dir als "größere" Hilfe vielleicht mal []http://www.wikiservice.at/dse/wiki.cgi?QuickSort an.

Bezug
        
Bezug
quicksort: Antwort
Status: (Antwort) fertig Status 
Datum: 12:28 Mo 14.02.2005
Autor: baskolii

Hi Eirene!

Wo genau liegt denn das Problem?
Verstehst du den Algorithmus nicht, oder hapert es am Programmieren?

zu Quicksort:

du hast z.B. eine Folge von Zahlen und willst diese sortieren
nimm dir eine Zahl (=Pivotelement) aus der Folge (die Meisten nehmen die Mitte) und verschiebe alle Zahlen, die rechts von dieser Zahl stehen+kleiner sind als diese nach links und alle Zahlen, die links von der Zahl stehen+größer sind nach rechts. Jetzt steht dein Pivotelement an der richtigen stelle und man muss nur noch die Bereiche rechts und links davon sortieren. Bei diesen Bereichen verfährst du genauso.
mmh, ist schlecht zu erklären, hier ein Beispiel
[mm] \vmat{ 63 & 24 & 12 & 53 & 72 & 18 & 44 & 35 } [/mm] wähle 53 als Pivotelement
[mm] \vmat{ 18 & 24 & 12 & 35 & 44 & 53 & 72 & 63} [/mm]
sortiere jetzt  [mm] \vmat{ 18 & 24 & 12 & 35 & 44 } [/mm] und [mm] \vmat{72 & 63 } [/mm]
wähle 12 bzw. 72 als Pivotelement, dann:
[mm] \vmat{ 12 & 24 & 18 & 35 & 44 } [/mm] und [mm] \vmat{63 & 72 } [/mm]
sortiere jetzt [mm] \vmat{ 24 & 18 & 35 & 44 } [/mm] mit 18 als Pivotelement:
[mm] \vmat{ 18 & 24 & 35 & 44 } [/mm]
fertig

zu deinem Quelltext:
deine Zahlenfolge wird hier durch ein Feld beschrieben
Function quicksort(s,e) (sortiere den Bereich s bis e, am Anfang also 0 bis 7 (im Bsp. oben))
  i=s
  j=e
  x=feld((i+j)/2) (x ist dein Pivotelement)
  Repeat
    While feld(i)<x (du durchläufst deinen Feldbereich vom linken Rand, bis du ein Element gefunden hast, dass größer als dein Pivotelement ist)
      i=i+1
    Wend
    While feld(j)>x (du durchläufst deinen Feldbereich vom rechten Rand, bis du ein Element gefunden hast, dass kleiner als dein Pivotelement ist)

      j=j-1
    Wend
    If i<=j Then  (Jetzt hat das Element feld(i), dass links vom Pivotelement ist, aber größer als dieses ist und das Element feld(j), das rechts vom Pivotelement ist und kleiner ist als dieses: hier werden die beiden Elemente vertauscht)
      tmp=feld(i)
      feld(i)=feld(j)
      feld(j)=tmp
      i=i+1
      j=j-1
    End If
  Until i>j
(Jetzt liegt dein Pivotelement an der richtigen Stelle)
  If j>s Then quicksort(s,j) (Sortiere nun den Bereich s bis j)
  If i<e Then quicksort(i,e) (Sortiere nun den Bereich i bis e)

End Function

Hoffe, ich konnte dir helfen.

mfg Verena



Bezug
                
Bezug
quicksort: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:46 Mo 14.02.2005
Autor: Eirene

nun ja wenn ich ehrlich sein soll verstehe ich alles nicht,  das Prinzip verstehe ich, aber ich weiß überhaupt nicht wie man es programmiert, und wie z.B die Form dann ausssieht

ich weiß auch überhaupt nicht wie ich anfangen soll...
hmm...

Bezug
                        
Bezug
quicksort: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:56 Mo 14.02.2005
Autor: baskolii

mmh, kannst du vielleicht etwas genauer sagen, was dein Problem ist.
In welcher Programmiersprache soll denn das ganze sein.

mfg Verena

Bezug
                                
Bezug
quicksort: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:43 Mo 14.02.2005
Autor: Eirene

Also es sollte auf jeden fall in delphi sein.

Bezug
                        
Bezug
quicksort: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:56 Mo 14.02.2005
Autor: Karl_Pech

Hi,

Hast Du denn schonmal 'was über Google gesucht? Eine []Suche mit den Suchbegriffen "delphi quicksort" liefert mir immerhin 7090 Treffer. ;-)

Viele Grüße
Karl


Bezug
                                
Bezug
quicksort: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:14 Di 15.02.2005
Autor: schneckchen_moeh

Hallo Eirene!

Die Google-Tipps von Karl dürften dir schon weiterhelfen.
Dabei brauchst du aber bereits Kenntnisse in Delphi generell.

Falls du dazu Fragen hast, stell sie ruhig.
Ich persönlich hab es nämlich mal im Praktikum intensiv gelernt.

Viel Erfolg
Gruß Schneckchen

Bezug
        
Bezug
quicksort: Anmerkung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:52 So 20.02.2005
Autor: difftop

Du hast die Lösung, die Quicksort-Funktion bereits aufgeschrieben.
(allerdings in einer Basic-Notation)
Sie ist nur noch in die Objekt-Pascal-Syntax (liegt Delphi zugrunde)
zu übertragen.
Die While-Schleife in begin .... end, statt Wend zusammenfassen,
die Verzeigung ebenfalls in begin ... end, statt endif zus.fassen.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Pascal"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorwissen.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]