Hoi
ich schätze mal, das wird nicht gehen.
Stimmt. Da haben sich leider noch mehr Fehler eingeschlichen (ich sollte es mir abgewöhnen, derartigen Code zu posten wenn ich ihn nicht ausprobieren kann) ...
// as: array zum sortieren
temparray = new array();
function asort(spalte)
{
for(i=0; i<as.length; i++)
{ ta(i);
danach ist temparray[i]=as[i]
Ne (siehe auch erste Nachtrag (<?m=31481&t=5641>)
temparray bekommt die Werte aus as[i] zugewiesen
for(j=i+1; j<as.length; j++)
{ if(temparray[i][spalte]>as[i][spalte])
ist stets gleich, da temparray[i]=as[i]
Käse freilich.
die Zeile muß auch ...
{ if(temparray[spalte]>as[j][spalte])
heißen.
ta(j); }
wird nie ausgeführt
jetzt schon.
at(i);
schreibt temparray[i] wieder nach as[i]
jetzt nimmer. Jetzt wird der garantiert kleinste Wert, der nun in Temparray steht, in das Array as[i] geschrieben. Nun fehlt da aber noch eine Zeile, die den Wert aus as[i] sichert und an die Stelle schreibt, wo vorher der jetzige Wert für as[i] stand.
}
-> Array hat hinterher die gleiche Reihenfolge, wie vorneweg
Nochmal der ganze Käse im Überblick:
// as: array zum sortieren
var temparray = new array();
var lastchangedj = "";
function asort(spalte)
{
for(i=0; i<as.length; i++)
{ ta(i);
lastchangedj=i;
for(j=i+1; j<as.length; j++)
{ if(temparray[spalte]>as[j][spalte])
{ lastchangedj = j;
ta(j); }
}
if(i!=lastchangedj) ch(i, lastchangedj);
at(i);
}
}
function ta(i)
{ for(j=0; j<as[i].length; j++)
temparray[j] = as[i][j]; }
function at(i)
{ for(j=0; j<temparray.length; j++)
as[i][j] = temparray[j]; }
function ch(i,j)
{ for(k=0; k<as[i].length; k++)
as[j][k] = as[i][k]; }
Jetzt sollte es funktionieren (ich hab leider immer noch keine Möglichkeit, das richtig auszuprobieren)
[...] Code des Alg's, den ich empfehlen würde:
var i,j,t,len=Array2D.length
Rank=new Array(len)
for (i=0; i<len; i++) Rank[i]=i;
function SortDesc(spalte)
{ for (i=0; i<len-1; i++)
{ for (j=len-1; j>i; j--)
{ if (Array2D[Rank[j-1]][spalte]<Array2D[Rank[j]][spalte])
{ t=Rank[j-1];
Rank[j-1]=Rank[j];
Rank[j]=t;
}
}
}
}
Schaut mir auf den ersten Blick so ein bißl nach einer abgekürzten Schreibweise von meinem Ding aus ... Werd's bei Gelgenheit mal ausprobieren :-)
Ciao,
Harry