Проблемы с сортировкой по алфавиту

В общем, набросал сразу такую функцию для сортировки:

WORKER* sortNames(WORKER* array) {
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 9; j++) {
            if (array[j].fio[0] > array[j + 1].fio[0]) {
                WORKER tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
            }
        }
    }
    return array;
}

И это работало. Затем заменил на вариант, где будет сортировка по второму, третьему и т.д. символу, если первый одинаковый.

WORKER* sortNames(WORKER* array) {
    std::cout << "Entering function\n";
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            std::cout << "Begginning cycle " << i + 1 << "/" << j + 1 << "\n";
            bool isSorted = false;
            int index = 0;
            while (!isSorted) {
                if (array[j].fio[index] > array[j + 1].fio[index]) {
                    WORKER tmp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = tmp;
                    isSorted = true;
                    std::cout << "Sorting\n";
                }
                else if (array[j].fio[index] <= array[j + 1].fio[index]) {
                    index++;
                    std::cout << "Skipping\n";
                }
            }
        }
    }
    return array;
}

При проверке на "Тест", "Ттест" и "Теест" получаю:

Entering function
Begginning cycle 1/1
Skipping
Skipping
Sorting
Begginning cycle 1/2
Skipping
Skipping
Sorting
Begginning cycle 2/1
Skipping
Sorting
Begginning cycle 2/2
Skipping
Sorting
Begginning cycle 3/1
Skipping
Skipping
Skipping
Skipping
Skipping
Sorting
Begginning cycle 3/2
. . .

И дальше много пропусков (явно выходящих за рамки слова) и последняя сортировка. Возвращённый массив, выводимый через

void showEmployees(WORKER* array) {
    for (int i = 0; i < 3; i++) {
        std::cout << "\n\nФИО работника: " << array[i].fio << "\nДолжность: " << array[i].position << "\nГод поступления на работу: " << array[i].year << "\n\n";
    }
}

такой же как и изначальный. fio представляет собой char fio[40], вводится cin.getline(array[i].fio, 40) (ввод в цикле for, пропуск \n в конце цикла есть).


Ответы (0 шт):