![]() |
[PHP] Quick-Sort
Das ist die 1:1-Umsetzung des Quicksort-Algorithmus, wie er auf
![]()
Code:
Ach ja: Die echos sind nur zur Information da und haben nix mit dem Algorithmus selbst zu tun. Falls der Algorithmus mal funktionieren sollte, kommen die raus. Nur falls es Verwirrungen gibt :wink:
function QuickSort(&$array,$lo,$hi) {
$i = $lo; $j = $hi; echo "Anfang: i: $i, j: $j "; $x = $array[bcdiv($lo + $hi,2,0)]; while($i<=$j) { while($array[$i]<$x) $i++; while($array[$y]>$x) $j--; if($i <= $j) { $h = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $h; $i++; $j--; } } echo "Ende: i: $i, j: $j "; if($lo < $j) QuickSort($array,$lo,$j); if($i < $hi) QuickSort($array,$i,$hi); } |
Re: [PHP] Quick-Sort
Hallo Chewie,
also: Mir fällt zunächst auf, dass du anders als im Tut. von Delphi-Source den zu sortierenden Array nicht als global definiert hast, was ich aber machen würde, ausserdem hast du bei der Variablen-Entgegennahme im Funktionskopf ein "&" vor der array stehen, was nicht notwendig ist, da du ja die bearbeitete Variable jedesmal wieder an die Funktion übergibts -> wegmachen. Zitat:
Ich werd deinen code mal mit globaler variable testen. Gruß Jan |
Na ja, ich hab das "&" vor dem Array benutzt, weil ich ja das Array als Referenz übergeben muss. Auf globale Variablen wollte ich eigentlich verzichten. Aber ich muss es mal mit globaler Variable ausprobieren.
Nachtrag: Scheint mit globaler Variable genausowenig zu funktionieren. Ach ja, was nicht funktioniert, ist ganz einfach: Das Array wird nicht richtig sortiert. Nimm z. B. mal folgendes Array:
Code:
$array[0] = 3;
$array[1] = 1; $array[2] = 2; $array[3] = 8; $array[4] = 4; $array[5] = 1; |
HEHE lol hab deinen Fehler gefunden.. :]
Code:
bei der 2. while schleife das soll wohl kaum $y sein oder? schreib da mal $j rein, dann sollte es passen.
while($array[$i]<$x) $i++;
while($array[$y]>$x) $j--; Gruß Jan |
Verdammt :duck:
Immer diese dummen Fehler. Warum muss das y auch soviel Ähnlichkeit mit dem j haben ?? :wink: Herzlichen Dank, Jan. Ich hab den Code dreimal durchgelesen und trotzdem den Fehler übersehen. Wie schön ist da ein Compiler, der bei jeder undeklarierten Variable meckert... @ Daniel: Es wäre ganz schön, wenn du mal einen Kopf-an-die-Wand-Smiley einführen könntest... :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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