Linq auf 2 Arrays in 1 Schleife?

7

Ist es möglich, die Effizienz dieser linq-Anfragen zu verbessern? Ich benutze zwei verschiedene Schleifen ... Können Sie mir helfen, diesen Code zu optimieren?

%Vor%

Dieser Code in Python ist so, wenn Sie bevorzugen:

%Vor%

Sie werden feststellen, dass ich in diesem Python-Code nur eine Sorte verwende. das ist nicht der Fall von diesem c # -Code.

sollten wir am Ende bekommen:

%Vor%

Fred

Bearbeiten: Ich benutze das Programm von Diadistis (nach einer kleinen Korrektur)

Also hier gehen wir: Array.Sort (x, y) (0.05) ist der schnellste Weg (0.18) nach

%Vor%

Die anderen Lösungen sind ziemlich äquivalent (~ 0.35) in Zeitverbrauch auf meinem PC.

Wenn jemand eine interessante Idee hat, werde ich es profilieren und diesen Beitrag aktualisieren.

    
Frederic 19.01.2010, 12:53
quelle

4 Antworten

12

Es ist in Ordnung, aber ich bevorzuge eine einfachere Syntax:

%Vor%

Bearbeiten:

Argh ... Ich konnte nicht erkennen, dass dies eine assoziative Array-Sortierung war.

%Vor%

Bearbeiten Sie 2 1/2

Und einige Leistungstests:

%Vor%

Und die Ergebnisse:

%Vor%     
Diadistis 19.01.2010, 15:40
quelle
4

Wenn ich Ihren Code richtig lese, versuchen Sie, zwei Arrays nach den Elementen des ersten Arrays zu sortieren.

Die wörtliche Übersetzung Ihres Python-Codes in C # wäre etwa so:

%Vor%

Alternativ könnten Sie die beiden Arrays zu einem Aufzählungsverzeichnis von Tupeln komprimieren und dann nach dem ersten Element sortieren:

%Vor%     
dtb 19.01.2010 13:12
quelle
2

Dies könnte schneller sein, da Sie nur einmal sortieren:

%Vor%     
Christian 19.01.2010 13:23
quelle
2

Sie können auch Folgendes tun. Beachten Sie, dass, wenn Sie y [n] wie in leppie Kommentar gemeint haben

%Vor%

Aktualisieren

Sollte wie folgt sein, um das richtige Ergebnis zu erhalten.

%Vor%     
affan 19.01.2010 13:09
quelle

Tags und Links