Небольшая логическая проблема в вашем коде, потому что индексы в Java (или любом другом языке программирования в целом) начинаются с нуля, где мы, естественно, считаем числа из одного.Поэтому, когда минимальное число было первым, ваше mindex
стало равным нулю, из-за чего в вашем массиве вычитался ноль (вместо фактически одного), каждый раз получая один и тот же массив и проходя бесконечный цикл.
Так что вам просто нужно добавить единицу в свой индекс при поиске минимального индекса из вашего массива.
Просто измените эту строку,
int mindex = a.indexOf(Collections.min(a));
на,
int mindex = a.indexOf(Collections.min(a)) + 1;
И ваша программа будет работать так, как вы хотели, и больше не будет работать в бесконечном цикле.