Вы говорите, что вы должны заказать 3 строки лексикографически. Я понимаю, что это означает, что вы должны вывести 3 строки по порядку, от низкого к высокому, а не просто найти самые маленькие.
Вот некоторый Java-код для иллюстрации логики, необходимой для этого с минимальным числом сравнений:
public static void main(String[] args)
{
String[][] tests = {
{"a", "b", "c"},
{"a", "c", "b"},
{"b", "a", "c"},
{"b", "c", "a"},
{"c", "a", "b"},
{"c", "b", "a"},
};
for(String[] s : tests)
{
order(s[0], s[1], s[2]);
}
}
static void order(String first, String second, String third)
{
int firstSecond = first.compareTo(second);
int firstThird = first.compareTo(third);
int secondThird = second.compareTo(third);
if(firstSecond < 0)
{
if(firstThird < 0)
{
if(secondThird < 0)
{
print(first, second, third);
}
else
{
print(first, third, second);
}
}
else
{
print(third, first, second);
}
}
else if(secondThird < 0)
{
if(firstThird < 0)
{
print(second, first, third);
}
else
{
print(second, third, first);
}
}
else
{
print(third, second, first);
}
}
private static void print(String... arr)
{
System.out.println(Arrays.toString(arr));
}
Выход:
[a, b, c]
[a, b, c]
[a, b, c]
[a, b, c]
[a, b, c]
[a, b, c]