Thomas Binder: dynamisches Sortieren einer Tabelle

Beitrag lesen

Ich habe eine Lösung dieses Problems gefunden, die auch zu funktionieren scheint.

Wie sieht die denn aus?

Nachdem sich die Instabilität des numsort doch nicht als problematisch erwiesen hat, konnte ich es bei meiner Lösung belassen.
In dem Skript aus Stefan Münz's Feature-Artikel sind nur wenige Ergänzungen erforderlich:

  1. Ein zusätzliches Array "Kontrolldaten". Dieses wird parallel zu den beiden anderen Sortier-Arrays mit Nullen aufgefüllt.
     var Kontrolldaten = new Array();  NEU
     var SortierIndex = new Array();
     for(var i = 0; i < Zeilen; ++i)
      { Spaltendaten[i] = Vergleichsdaten[i] = Tabellendaten[i * Spalten + Nummer];
      Kontrolldaten[i] = 0; } NEU
    (Nur die NEU-Zeilen und die Klammerung kamen hinzu.)

Dieses Array dient zur Kennzeichnung der bereis "abgearbeiteten" Vergleichsdaten und wird daher beim Abarbeiten mit Einsen ersetzt.
Hinzu kommt eine entsprechende Erweiterung der Abfrage im Sortierteil, also:
2)
if(Spaltendaten[i] == Vergleichsdaten[j] && Kontrolldaten[j] == 0)
  { SortierIndex[i] = j; Kontrolldaten[j] = 1; break; }
Neu ist hier (erneut neben der Klammerung) folgendes:

  • Die Ergänzung der if-Bedingung um die Kontrolldaten
  • Das Setzen der "verbrauchten" Indizes auf "1" im Kontrolldaten-Array
  • Das Break um mehrfaches Abarbeiten der Schleife bei gleichen Werten zu verhindern.

Bin für kritische Prüfung jederzeit dankbar, aber es scheint in allen gängigen Browsern (okay - mit JavaScript) zu funktionieren.
Hier die entsprechende Seite:
http://www.herderschach.de/Fame/team_einsaetze_sort.html