начнем с исключения indexOutOfRange - при index равном последнему элементу index + 1что выдаст?
далее у вас нет флага isChanged или isSwapped который является индикатором отсортированности
и закончим тем что ответ от Молота не оптимален даже относительно не оптимизированной версии пузыря
гляньте вики но лучше на инглише там вроде попонятнее