Ich brauche eine ziemlich spezialisierte Sammlung von .NET, und ich denke nicht, dass die BCL mir helfen kann, aber ich dachte, ich würde es da rausschmeißen, wenn jemand etwas Ähnliches wüsste.Existiert eine sortierte Warteschlange in .NET?
Grundsätzlich meine Anforderungen sind somit:
- Ich habe eine Liste von Paaren von Werten, wie zum Beispiel: (3, 10), (5, 10), (3, 7), (5, 5)
- Reihenfolge ist wichtig, dh. (3, 10)! = (10, 3)
- Duplikate einzelner Werte sind in Ordnung, doppelte Paare sollten jedoch gelöscht werden (vorzugsweise im Hintergrund).
- Der Kicker ist, ich brauche diese Liste die ganze Zeit sortiert. Ich bin immer nur an dem ersten Wert in der Liste interessiert, der durch den Sortieralgorithmus definiert wird.
So, einige Beispiel-Code, was ich will (wie ich es wahrscheinlich umgesetzt würde sich vorstellen, andere Implementierungen, die oben sind in Ordnung zu passen) zu tun in der Lage:
public class Pair
{
public Pair(int first, int second)
{ First = first; Second = second; }
public int First { get; set; }
public int Second { get; set; }
}
SortedQueue<Pair> foo = new SortedQueue<Pair>((left, right) => {
return right.First - left.First;
});
foo.Add(new Pair(10, 3));
foo.Add(new Pair(4, 6));
foo.Add(new Pair(6, 15));
foo.Add(new Pair(6, 13)); // This shouldn't cause a problem
Pair current = foo.Shift(); // current = (4, 6)
Siehe "Priority queue in. Net", http://stackoverflow.com/questions/102398/priority-queue-in-net –
Vielen Dank für den richtigen Namen und Link. Und jetzt, wo ich über den Wikipedia-Artikel blicke, war die Art, wie ich daran dachte, sie zu implementieren, eine Mischung aus den beiden Typen, die in den 'einfachen Implementierungen' aufgelistet sind (eine Liste mit einem Flag, ob sie sortiert ist oder nicht) Bei der Einfügung, dann sortieren Sie, wenn Sie vor dem Abrufen benötigt werden). Und danke dangph für die Verbindung zu einigen tatsächlichen Implementierungen. –
Für die Aufzeichnung, das war für eine Implementierung von A * Suche auch, die dieser Wikipedia-Artikel einige Anmerkungen auf auch hat, also doppelte Anerkennung. –