Есть две проблемы с вашим видом. Во-первых, вы используете firstIndx
и secondIndx
, но в зависимости от структуры вашего кода это второе число обрабатывается так, как если бы это был второй индекс минус 1 .
Вторая проблема заключается в том, что ваш внутренний цикл начинается каждый раз с firstIndx
, что нарушает сортировку пузырьков. Он должен начинаться с i
.
Попробуйте эту модификацию вашего цикла for:
for (int i = firstIndx; i <= secondIndx - 1; i++) { // Notice the "<=".
for (int j = i + 1; j <= secondIndx; j++) { // j starts at i
// ... existing bubble sort code goes here
}
}
Редактировать: Я не упомянул, что ваш подход не будетнайдите максимум, если максимум уже находится в отсортированной позиции. Вы должны просто взять максимум из array[secondIndx]
после того, как закончите сортировку.
В качестве отступления, firstIndx
- довольно плохое имя переменной. Осталось только написать еще одно письмо: firstIndex
.