Почему на каждом шаге итерации происходит двойное инкремирование переменных i и j при сортировке?
Вопрос скорее всего максимально глупый, но я никак понять не могу, почему на каждом шаге итерации происходит двойное инкремирование переменных i и j?
Даже допуская то, что в первом случае это происходит для замены переменных местами и лишь тогда, когда переменная меньше или больше среднего значения. Но не пойму зачем инкремировать их еще раз, ведь тогда некоторые из значений массива (по моему) должны быть пропущены.
Объясните пожалуйста чайнику, максимально доступно.
class Sort {
static void msor(char mas[]) {
ms (mas, 0, mas.length-1);
}
private static void ms (char mas[], int left, int right) {
int i, j;
char sered, temp;
i = left; j = right;
sered = mas[(left+right)/2];
do {
while ((mas[i]<sered) && (i<right)) i++;
while ((mas[j]>sered) && (j>left)) j--;
if (i<=j) {
temp = mas[i];
mas[i] = mas[j];
mas[j] = temp;
i++; j--;
}
} while (i<=j);
if (left<j) ms (mas, left, j);
if (right>i) ms(mas, i, right);
}
}
class Prog127 {
public static void main (String args[]) {
char mas[] = {'b', 'x', 'a', 'g', 'r', 'k', 'z', 'f'};
System.out.println ("Massiv do:");
for (char i : mas)
System.out.print(i+" ");
System.out.println ("\nMassiv posle:");
Sort.msor(mas);
for (char i : mas)
System.out.print(i+" ");
}
}