Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Quicksort (Ausgabe) (https://www.delphipraxis.net/17780-quicksort-ausgabe.html)

Trouble_Maker 9. Mär 2004 18:14


Quicksort (Ausgabe)
 
Hiho hab mal wieder ein Problem:

hier meine Source vom Quicksort:
Delphi-Quellcode:
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;
Aber jetzt meckert der bei der letzen Zeil!
[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

Luckie 9. Mär 2004 18:16

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]);

Markus K. 9. Mär 2004 18:18

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:
form1.memo1.lines.add(inttostr(data[{nummer}]));
Tschüß Markus

Trouble_Maker 9. Mär 2004 18:25

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

Trouble_Maker 9. Mär 2004 19:37

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

Luckie 9. Mär 2004 20:01

Re: Quicksort (Ausgabe)
 
Was soll das eigentlich:
Delphi-Quellcode:
  i := d;
  j := r;
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.

n00b_on_knees 9. Mär 2004 20:04

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.

n00b_on_knees 9. Mär 2004 20:06

Re: Quicksort (Ausgabe)
 
Zitat:

Zitat von Luckie
Was soll das eigentlich:
Delphi-Quellcode:
  i := d;
  j := r;
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.

Huch, deinen Post wohl genau gleichzeitig gepostet..naja bei mir hat das etwas lange gedauert bist das ganze abgesendet war. :)

Sortieralgorithmen..ich hatte mich da mal bezüglich des Mergesort erkundigt..mein Professor meinte, es sei eine unglückliche Version des Quicksort! :gruebel:

Markus K. 9. Mär 2004 20:10

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

Trouble_Maker 9. Mär 2004 20:16

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.
Seite 1 von 2  1 2      

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