length-1 - потому что индексы начинаются с нуля, следовательно номер последнего - это length-1.
Цикл проходит по всем индексам, а затем он должен вернуться и начать заново, но я этого не вижу в коде.
"Начать заново" - это следующая итерация внешнего цикла while. Он остановится только тогда, когда внутри внутреннего цикла ниразу не сработает условие в if, т.е. когда массив будет отсортирован. Тогда check станет true, и следующая итерация while не запустится.