Quicksort funzt nicht
Adi K.
- javascript
0 HILFE
Adi K.0 Blaubart
Hallo zusammen!
Ich wollte als kleine Übung den Quicksort-Algorithmus in JS implementieren, um damit Tabellen zu sortieren.
Leider studiere ich nun schon seit Stunden weshalb er nicht funktioniert. Man muss ihn immer mehrere Male ausführen (ca. 5 mal), bis die Tabelle sortiert ist (126 Einträge). Ich sehe einfach keinen Fehler bei der Implementation... Hab ihn mal durch Bubblesort ersetzt, dann hat es super funktioniert.
Könnt ihr mir helfen?
Liebe Grüsse
Adi
PS: Wenns dann mal funktioniert, werde ich den Algorithmus noch optimieren.
HTMLTableSectionElement.prototype.quicksort = function (lo, hi, k) {
var l = lo;
var r = hi;
var p = this.rows[r].getText(k);
while (l < r) {
while (l<r && this.rows[l].getText(k) < p) l++;
while (l<r && this.rows[r].getText(k) >= p) r--;
if (l < r) this.exchRows(l,r);
}
this.exchRows(r,hi);
this.quicksort(lo, r-1, k);
this.quicksort(r+1, hi, k);
}
Hat niemand eine Idee?
Ich habs noch nicht herausgefunden...!
Liebe Grüsse
Adi
Tach.
HTMLTableSectionElement.prototype.quicksort = function (lo, hi, k) {
var l = lo;
var r = hi;
var p = this.rows[r].getText(k);
while (l < r) {
while (l<r && this.rows[l].getText(k) < p) l++;
while (l<r && this.rows[r].getText(k) >= p) r--;
if (l < r) this.exchRows(l,r);
}
this.exchRows(r,hi);
this.quicksort(lo, r-1, k);
this.quicksort(r+1, hi, k);
}
Ich frage mich (und darüber hinaus hab ich mir Deinen Code noch nicht genauer angesehen), wie diese Funktion überhaupt irgendwann abbrechen soll. Sie ruft sich stets in den letzten beiden Zeilen ohne jegliche Bedingung rekursiv auf.
--
Once is a mistake, twice is Jazz.