DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Sortiervektor

Liebe Mathematica Freunde,

bei mir taucht das folgende Problem auf, für das ich bisher noch keine
befriedigende Lösung gefunden habe:

Ich muß verschiedene Variable, die alle dieselbe Länge haben, in eine
Sortierreihefolge bringen, die von einer weiteren Variablen bestimmt wird.
Das kann man z.B. mit einem Indexvektor  machen, der die Sortierreihenfolge
enthält. Wie jedoch läßt sich der Indexvektor effizient ermitteln? Gibt es
dafür einen Mathematica-Befehl?

Meine jetzige Lösung sieht so aus:

Rechnung:
        In[23]:=
                n=10;
                b=Table[Random[],{n}]
                indxVec=Sort[Range[n],b[[#1]]>b[[#2]]&]
        Out[23]=
               
{0.545115,0.684802,0.157131,0.531776,0.199671,0.197229,0.57873,0.905978,
                  0.198748,0.717526}
        Out[24]=
                {8,10,2,7,1,4,5,9,6,3}
Test:
        In[25]:=
                Inner[Equal,Sort[b,Greater],b[[indxVec]],And]

        Out[25]=
                True

Sie liefert zwar das richtige Ergebnis, funktioniert aber nur für Vektoren
und dauert recht lange im  Vergleich zur normalen Sortierfunktion:

In[46]:=
        n=100000;
        b=Table[Random[],{n}];
        Timing[indxVec=Sort[Range[n],b[[#1]]>b[[#2]]&];]
Out[46]=
        {62.859 Second,Null}
In[47]:=
        Timing[Sort[b,Greater];]
Out[47]=
        {17.062 Second,Null}
In[48]:=
        Timing[Sort[b];]
Out[48]=
        {2.328 Second,Null}

Für Tips wäre ich sehr dankbar.


Herzliche Grüße

Wolfgang




Antworten:
Re: Sortiervektor
Arnd Roth, 02.08.1998
Re: Sortiervektor
Arnd Roth, 02.08.1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:44