Anleitungen:Listen von beliebigen Elementen sortieren: Unterschied zwischen den Versionen
Zeile 20: | Zeile 20: | ||
}} | }} | ||
− | + | Der Trick, dieses Problem in GeoGebra zu lösen, besteht darin, unter Verwendung von bereits bestehenden Befehlen eine Liste von Punkten zu sortieren. Dabei müssen Sie sich die Punkte nicht geometrisch, sondern als Zahlenpaar vorstellen. GeoGebra sortiert Punkte nach der ''x''-Koordinate, weshalb wir eine Liste von Punkten <math>\tilde c = (\tilde c_1, \ldots, \tilde c_n)</math> mit <math>\tilde c_k := (f(a_k), k)</math> erzeugen und diese sortieren. | |
+ | Sei <math>c = (c_1, \ldots, c_n)</math> nun die sortierte Liste. Diese ermöglicht <math>\sigma</math> zu konstruieren, da <math>y(c_{\sigma(k)}) = k</math>. Unter Verwendung dieses <math>\sigma</math> lässt sich dann die sortierte Version der ursprünglichen Liste erzeugen. |
Version vom 11. Juli 2012, 09:27 Uhr
Es ist leicht möglich, dass der Befehl Sortiere eine Liste von Objekten in GeoGebra nicht in der Art und Weise sortiert, wie Sie es gerne hätten. (Wenn Sie die Sortierung umkehren wollen, verwenden Sie den Befehl Sortiere in Kombination mit dem Befehl Umkehren.)
Für den Fall, dass der Befehl Sortiere
die Elemente der Liste nicht ordnen kann oder Sie ein anderes Ordnungskriterium benötigen, kann Ihnen diese Anleitung helfen. Zum besseren Verständnis des Algorithmus finden Sie im Anschluss daran Erklärungen und Beispiele.
Algorithmus
- Sei
Liste
jene Liste, die Sie sortieren wollen. Liste_h = Sortiere[Folge[(*Zahl/Befehl bezüglich Element[Liste, i]*, i), i, 1, Länge[Liste]]]
Diese Hilfsliste wird in der anschließenden Erklärung mit c bezeichnet, der fett markierte Teil mit f.Liste_s = Folge[Element[Liste, y(Element[Liste_h, i])], i, 1, Länge[Liste]]
Dies erstellt die gewünschte, sortierte Liste.
Erklärung
Um diesen Algorithmus etwas verständlicher zu machen, versuchen wir eine mathematische Formulierung:
- Gegeben seien die Liste (a_1, a_2, \ldots, a_n) \subset X und die Abbildung f: X \to \mathbb R. Gesucht ist jene Permutation \sigma \in S_n, für die gilt: f(a_{\sigma(k)}) \leq f(a_{\sigma(l)}) \; \forall (k,l) \in \mathbb N^2: 1 \leq k \leq l \leq nDiese Permutation können Sie sich als Umnummerierung vorstellen, sodass (a_{\sigma(1)}, a_{\sigma(2)}, \ldots, a_{\sigma(n)}) die gewünschte, sortierte Liste ist.
Zu Beginn muss also die passende Abbildung f gefunden werden, beispielsweise:
A
dem Befehl Länge[A]
, also lautet der fett markierte Teil im Algorithmus: Länge[Element[Liste,i]]
.Radius[Element[Liste,i]]
.Der Trick, dieses Problem in GeoGebra zu lösen, besteht darin, unter Verwendung von bereits bestehenden Befehlen eine Liste von Punkten zu sortieren. Dabei müssen Sie sich die Punkte nicht geometrisch, sondern als Zahlenpaar vorstellen. GeoGebra sortiert Punkte nach der x-Koordinate, weshalb wir eine Liste von Punkten \tilde c = (\tilde c_1, \ldots, \tilde c_n) mit \tilde c_k := (f(a_k), k) erzeugen und diese sortieren. Sei c = (c_1, \ldots, c_n) nun die sortierte Liste. Diese ermöglicht \sigma zu konstruieren, da y(c_{\sigma(k)}) = k. Unter Verwendung dieses \sigma lässt sich dann die sortierte Version der ursprünglichen Liste erzeugen.