Wie schreibt man am besten eine Kontrollstruktur, die durch jede 2-Elemente-Kombination in einer Liste iteriert?Vergleichen jedes Elements mit jedem anderen Element in einer Liste
Beispiel:
{0,1,2}
ich einen Code-Block laufen dreimal haben wollen, einmal auf jedem dieser:
{0,1}
{1,2}
{0,2}
habe ich versucht, die folgende
foreach (int i in input)
{
foreach (int j in input.Where(o => o != i))
{
//Execute code
}
}
jedoch Dies funktioniert nicht, wenn eine Liste zwei gleiche Elemente enthält. Mit
{0,2,0}
mag ich noch auf den Elemente 0
und 0
vergleichen. Der Wert ist irrelevant.
Was machst du mit jedem dieser Paare? Ihre Lösung und Jons Lösungen sind alle O (n Quadrat). Je nachdem, was Sie tun, könnte es eine O (n) -Lösung geben. (Zum Beispiel müssen Sie im C# -Compiler jedes Methodenpaar in einem Überladungsauflösungsproblem vergleichen, um die eindeutige beste Methode zu bestimmen; dafür gibt es einen O (n) -Algorithmus, obwohl die bessere Methodenbeziehung intransitiv ist.) –