![]() |
Quicksort (Ausgabe)
Hiho hab mal wieder ein Problem:
hier meine Source vom Quicksort:
Delphi-Quellcode:
Aber jetzt meckert der bei der letzen Zeil!
procedure QuickSort();
var i,j,d,r,h1,h2: integer; data: array[1..maxelements] of integer; begin i:=d; j:=r; h1:=data[(i+j) div 2]; while i<j do begin while data[i] < h1 do i:= i+1; while data[j] > h1 do j:= j-1; end; if i<=j then begin h2:=data[i]; data[i]:= data[j]; data[j]:= h2; i:= i+1; j:= j+1; end else exit; if d<j then Quicksort() else exit; if i<r then Quicksort() else exit; form1.memo1.lines.add(inttostr(data)); end; [Fehler] Unit1.pas(269): Es gibt keine überladene Version von 'IntToStr', die man mit diesen Argumenten aufrufen kann hab kA was das zu bedeuten hat, und wie ich jetzt meine sortieren elemente (data) in ein memo schreiben soll ? kann mir jemand helfen ? thx Trouble_Maker PS: Hab bisher nur wenig erfahrungen mit eigenständigen Prozeduren |
Re: Quicksort (Ausgabe)
Data ist ein Array of Integer bei dir. Die letzte Zeile müsste so lauten:
Delphi-Quellcode:
for i := 0 to lenght(data) - 1 do
Form.Memo1.Lines.Add(IntToStr(data[i]); |
Re: Quicksort (Ausgabe)
Hi Trouble_Maker,
ich glaube es liegt daran dass du versuchst ein Array in einen String umzuwandeln. Du hattest ja oben data als ein Array of Integer definiert. Dann müsstest du die Integerzahlen wiefolgt auslesen.
Delphi-Quellcode:
Tschüß Markus
form1.memo1.lines.add(inttostr(data[{nummer}]));
|
Re: Quicksort (Ausgabe)
hm...
ja theoretisch habt ihr beide Recht. Aber bekomme bei beiden eine Exception, wenn ich im Programm den Quicksort aufrufe! Bei beiden "Versionen" zeigt er dann danach mitm grünen Pfeil auf h1:=data[(i+j) div 2]; was bedeutet das und wo ist der Fehler ? cu Trouble_Maker PS: schonmal danke für die schnelle Antwort |
Re: Quicksort (Ausgabe)
hi...
will ja nicht drängeln oder so! aber unser Info-Leher guggt sich das morgen an und gibt Noten drauf *heul* Hab echt su ewig rumprobiert und im I-net gesucht! Aber nix passendes gefunden! wär echt sau nett, wenn mir jemand heute noch helfen könnte! big thx Trouble_Maker |
Re: Quicksort (Ausgabe)
Was soll das eigentlich:
Delphi-Quellcode:
In i und j steht das drin, was zufällig in d und r drinsteht. Wie stellst du sicher, dass da was sinnvolles zugewieden wird? Desweiteren gibt es in der Tutorial Sparte auch ein umfassendes Tutorial zu den Sortieralgorithmen.
i := d;
j := r; |
Re: Quicksort (Ausgabe)
hmm, vielleicht weil i und j undefiniert sind? und weil diese Werte dann größer oder kleiner sind, als der Wertebereich von Data..ist natürlich nur ne Überlegung.
|
Re: Quicksort (Ausgabe)
Zitat:
Sortieralgorithmen..ich hatte mich da mal bezüglich des Mergesort erkundigt..mein Professor meinte, es sei eine unglückliche Version des Quicksort! :gruebel: |
Re: Quicksort (Ausgabe)
Ich habe mir die Funktion nochmal angeschaut, allerdings weiß ich ned was du so richtig tust :gruebel:
Wieso übergibst du eigentlich nie Variablen? Schon beim Start übergibst du keine und beim erneuten aufrufen der QuickSort Prozedur übergibst du auch keine. Zu dem müsste der Tausch mit in die While Schleife einbezogen werden. Und was möchtest du mit Exit erreichen? Zum anderen müsstest du das j beim Tausch um 1 verringern und nicht um 1 erhöhen. Tschüß Markus |
Re: Quicksort (Ausgabe)
hm...
tja... also das mit dem i := d; und so das steht alles aufm Zettel, den wir von unserm Info-Lehrer bekommen haben! Das warn Artikel aus der c´t von 1988 über Sortiermöglichkeiten *g* Daher stammen auch die exit´s ... weils da auch so ist... weiss auch nich so recht.. naja egal! Hab jetzt keine Lust mehr auf schule ^^ bis dann Trouble_Maker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 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