Jan K.: Sortieralgorithmus für Zahlen

Beitrag lesen

Hallo zusammen,

eines meiner Scripte enthät eine riesengroße Tabelle, momentan 1860 Spalten und steigend, inder ich gerne Zahlenwerte spaltenweise mit Javascript sortieren möchte.

Nach einigen Stunden rumprobieren habe ich eine Lösung fabriziert die funktioniert.

Solange ich die Funktion mit einem kleinen Array füttere funktioniert das ganze einwandfrei, aber wenn ich die gewünschte Arraylänge mit 1860 Feldern nehme schmiert der Browser ab, mit der Meldung daß das Javascript zulange läuft.

  
function sortNumbers(field){  
  //Erwartet Array als Input, gibt sortierten Array zurück  
  
  
  //nur Zahlen zugelassen, rest wird gelöscht  
  for(var b=0;b<field.length;b++){  
      field[b]=field[b]*1;  
      if(isNaN(field[b])){field.splice(b,1);}  
  }  
  
  //die Sortierfunktion  
  var groesste_zahl = new Array(0,0);  
  var field_sorted = new Array();  
  var y=0;  
  do{  
    groesste_zahl[0] = 0;  
    groesste_zahl[1] = 0;  
    for(var b=0;b<field.length;b++){  
      var wert_a = field[b];  
      for(var c=0;c<field.length;c++){  
        var wert_b = field[c];  
        if(wert_a > wert_b && wert_a > groesste_zahl[0]){  
        groesste_zahl[0] = wert_a;  
        groesste_zahl[1] = b;  
        }  
      }  
    }  
    field_sorted.push(groesste_zahl[0]);  
    field.splice(groesste_zahl[1],1);  
    y++;  
  }  
  while(field.length>0);  
  return field_sorted;  
}  

Hat den Anschein als wäre diese Lösung zu uneffizient. Nach ein wenig googeln bin ich auf den bubble-algorithmus gestoßen, vondem wikipedia sagt das er völlig ineffizient ist und nur zu schulungs und anschauungszwecken gut ist...

Da mir der nötige Background fehlt frage ich euch ob ihr eine Javascriptlösung für einen Zahlensortieralgorithmus für mehrere Tausend Werte kennt.

Was mich am Rande auch noch interessieren würde ist:
-Wielange kann ein Javascript durchnittlich(oder exakt wenn es da Richtwerte gibt) rechnen bis der Browser sich meldet das es zulange läuft
-Wie genau errechnet sich die Rechendauer für meinen (oder im allgemeinen) Sortieralgorithmus? Mir magelt es schon an dem mathematischen Grundverstänniß dafür. In meinem Algorithmus ist es beispielsweise eine 3 fach geschachtelte Schleife. Bei 1860 angenommenen Feldern und 3 facher Schachtelung, bedeuted das 1860^3 Durchläufe?

Grüße aus Berlin,

Jan