

Java - nejlepší algoritmus pro porovnání tří prvků.
Dobrý den,
Má 3 comboboxy, v každém z nich mám na výběr 4 barvy.
Jenže chci, aby každý měl svoji vlastní barvu - každá za 4 barev by byla vybrána pouze jednou.
Takže při každé změně potřebuji srovnat všechny 3 comboboxy.
Pomocí metody getSelectedIndex() porovnám, jestli se shoduje 1. s 2., 1. s 3. a 2. s 3.
Tento způsob je logický a srozumitelný, ale připadne mi zbytečně složitý.
Napadl mě tenhle algoritmus.
int color_value[] = new int[3];
color_value[0] = combo1.getSelectedIndex();
color_value[1] = combo2.getSelectedIndex();
color_value[2] = combo3.getSelectedIndex();
java.util.Arrays.sort(color_value);
if (color_value[0] != color_value[1] && color_value[1] != color_value[2]) {
...
}
Vytvořím pole, do něj naházím všechny 3 hodnoty, pole seřadím a teď mi stačí pouze srovnat 1. s 2. a 2. s 3.
Ale potřebuji vědět, jestli neexistuje nějaký lepší a hlavně jednodušší algoritmus.
Předem díky.
Stačí porovnat 1. s 2. a 2. s 3. ( neboť rovnost je tranzitivní relace
).
1 = A
2 = B
3 = A
1. a 2.: A != B => OK
2. a 3.: B != A => OK
ale:
1. a 3.: A == A => !OK
To jsem psal ale o rovnosti. Nerovnost ovšem není tranzitivní, jak jsi správně předvedl.
Na tazatelův problém dva testy stačí, v případě potřeby si konečný výsledek dvou porovnání zneguje.
Aha, tuto větu jsem jaksi zasklil, to je pravda.
Díky za snahu, ale neřešte to, lepší algoritmus než ty tři podmínky asi neexistuje.