Отсортировать массив структур TTrain в алфавитном порядке их поля nazv - C (СИ)
Формулировка задачи:
Здравствуйте. Стоит задача отсортировать массив структур TTrain в алфавитном порядке их поля nazv
Сама структура выглядит так:
Функцию сортировки я написал самую простую — пузырьковую, однако на массив она никак не влияет. Укажите, пожалуйста, на ошибку. Функция сортировки:
struct TDate
{
short day, month;
};
struct TTime
{
short minutes, hours;
};
struct TTrain
{
char nazv[50];
unsigned short numr;
struct TDate date;
struct TTime time;
};void trainSort(struct TTrain *RASP, int N)
{
for (unsigned i = 0; i < N; i++)
for (unsigned j = N - 2; j <= 0; j--)
if (strcmp(RASP[j].nazv, RASP[j + 1].nazv) > 0)
{
struct TTrain t;
t = RASP[j];
RASP[j] = RASP[j+1];
RASP[j+1] = t;
}
}Решение задачи: «Отсортировать массив структур TTrain в алфавитном порядке их поля nazv»
textual
Листинг программы
for (unsigned j = N - 2; j <= 0; j--)
Объяснение кода листинга программы
В данном коде выполняется сортировка массива структур TTrain в алфавитном порядке их поля nazv. Список действий:
for (unsigned j = N — 2; j <= 0; j--)- это цикл, который выполняется отN — 2до0с шагом-1. Переменнаяjпоследовательно принимает значенияN — 2,N — 3,N — 4и так далее, пока не достигнет0. ЗначениеNздесь - это размер массива структур TTrain.- Внутри цикла происходит сравнение и обмен элементов массива. Но в данном коде эта часть отсутствует, поэтому нам сложно сказать, что именно происходит внутри цикла. Однако, предполагается, что здесь используется алгоритм сортировки, например, пузырьком или вставками.
- Цикл выполняется до тех пор, пока
jне станет меньше или равным0. Это означает, что цикл выполняется до тех пор, пока не будет выполнен полный проход по массиву отN — 2до0. В итоге, данный код, скорее всего, выполняет сортировку массива структур TTrain в алфавитном порядке их поля nazv.