DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re: Sortiervektor

Lieber Wolfgang,

> 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]]&]

man kann ausnutzen, dass Sort bei Wertepaaren nach dem ersten Element
des Wertepaars sortiert:

sunny% math
Mathematica 3.0 for Solaris
Copyright 1988-97 Wolfram Research, Inc.
 -- Motif graphics initialized -- 

In[1]:= n = 10000;

In[2]:= b = Table[Random[], {n}];

In[3]:= Timing[indexVector1 = Sort[Range[n], b[[#1]] > b[[#2]] &];]

Out[3]= {70.74 Second, Null}

In[4]:= Timing[indexVector2 = Reverse[Map[#[[2]] &, Sort[Transpose[{b, Range[n]}]]]];]

Out[4]= {4.7 Second, Null}

In[5]:= indexVector1 == indexVector2

Out[5]= True

Viele Gruesse,

Arnd

--
Arnd Roth
Abteilung Zellphysiologie
Max-Planck-Institut fuer Medizinische Forschung
Postfach 10 38 20, D-69028 Heidelberg



Antworten:
Re: Sortiervektor
Wouter Meeussen, 03.08.1998
Verweise:
Sortiervektor
Wolfgang Ludwig, 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