Jaki jest najlepszy sposób napisania struktury kontrolnej, która będzie iterować przez każdą kombinację 2-elementową na liście?Porównywanie każdego elementu ze sobą elementem na liście
Przykład:
{0,1,2}
chcę mieć blok uruchomić kod trzy razy, raz na każdym z nich:
{0,1}
{1,2}
{0,2}
Próbowałem następujące
foreach (int i in input)
{
foreach (int j in input.Where(o => o != i))
{
//Execute code
}
}
jednak , to nie zadziała, gdy lista ma dwa takie same elementy. Z
{0,2,0}
bym nadal chcesz porównać elementy 0
i 0
. Wartość nie ma znaczenia.
Co robisz z każdą z tych par? Twoje rozwiązanie i rozwiązania Jona są wszystkie O (n do kwadratu). W zależności od tego, co robisz, może istnieć rozwiązanie O (n). (Na przykład w kompilatorze C# musisz porównać każdą parę metod w rozwiązywaniu problemu z przeciążeniem, aby określić unikalną najlepszą metodę, istnieje algorytm O (n), nawet jeśli relacja lepszej metody jest nieprzechodnia.) –