Ermitteln des i-ten Wertes aus einer SortedList oder SortedDictionary

8

Ich habe eine sortierte Sammlung von Objekten (es kann entweder SortedList oder SortedDictionary sein, ich werde es hauptsächlich zum Lesen verwenden, damit die Leistung nicht so wichtig ist). Wie kann ich den i-ten Wert erhalten?

Also z.B. wenn ich die Nummern 1, 2, 3, 4, 5 in der Sammlung habe und ich möchte den Median (also 3 in diesem Beispiel), wie kann ich es tun?

    
Grzenio 24.10.2008, 16:09
quelle

4 Antworten

7

Versuchen Sie etwas wie folgt:

list.Values ​​[list.Count / 2];

Beachten Sie, dass ein echter Median die zwei Zahlen in der Mitte mittelt, wenn Count gerade ist.

    
Neil Whitaker 24.10.2008, 16:14
quelle
21

Sie können Code wie

verwenden %Vor%

für eine sortierte Liste.

Der einfachste Weg mit einem SortedDictorary wäre die Verwendung der ElementAt () Methode:

%Vor%

Dies ist jedoch langsamer als im Listenfall.

In beiden Fällen müssen Sie Ihre Anzahl überprüfen. Wenn es ungerade ist, nehmen Sie index = (list.length-1) / 2). Wenn es gerade ist, nehmen Sie index1 = list.length / 2 UND index2 = list.length / 2 - 1 und mitteln Sie die Werte.

    
Godeke 24.10.2008 16:28
quelle
2

Sie können den Wert an einer bestimmten Position extrahieren, indem Sie die folgende Syntax verwenden:

%Vor%

Wenn Sie Schlüssel oder Wert eines Elements in einem gewünschten Index extrahieren möchten:

%Vor%     
mudrak patel 26.02.2017 19:19
quelle
1

Wenn Sie in einem SortedDictionary mehrmals ein Element nach Index suchen müssen, ist die Leistung miserabel. Erstellen Sie eine neue SortedList mit dem SortedDictionary als Eingabe und greifen Sie auf die SortedList zu. Läuft viel, viel schneller.

    
Eyal 13.02.2010 13:00
quelle

Tags und Links