Сортировка структуры по одному из полей методом пузырька - C (СИ)
Формулировка задачи:
Всем привет! Прошу помочь мне в написании сортировки по опр. полю,например, по марке.
Вот структура:
Файл car.dat
Пользуюсь visual studio 2013
ЗАРАНЕЕ СПАСИБО
struct car{
unsigned nr;
char marka[100];
char model[100];
char cvet[100];
char strana[100];
unsigned cena;
}car1, car2;Решение задачи: «Сортировка структуры по одному из полей методом пузырька»
textual
Листинг программы
// Вход - массив структур
// struct car array[...] = {...};
void bubble_sort(struct car * array, const unsigned int size)
{
unsigned int i, j;
struct car tmp;
for (i = 0; i < size; i++) {
for (j = size - 1; j > i; j--) {
if (strncmp(array[j].brand, array[j-1].brand, 100) < 0 ) { // Длина взята из приведенной вами структуры
tmp = array[j];
array[j] = array[j-1];
array[j-1] = tmp;
}
}
}
}
Объяснение кода листинга программы
- Входные данные: массив структур
arrayи размер массиваsize. - Создаются две переменные
iиjдля использования в циклах. - Создается временная структура
tmpтипаstruct car. - Запускается внешний цикл от 0 до
sizeдля прохода по всем элементам массива. - Внутренний цикл начинается с
j = size - 1и уменьшается на 1 с каждой итерацией, пока не станет меньшеi. - Проверяется, меньше ли поле
brandтекущего элемента по сравнению с предыдущим. Если меньше, то выполняется:- Создается временная переменная
tmp, которая содержит текущий элемент. - Текущий элемент заменяется значением предыдущего элемента.
- Предыдущий элемент заменяется временной переменной
tmp.
- Создается временная переменная
- Внутренний цикл завершается, когда
jстановится больше или равноi. - После завершения внутреннего цикла, внешний цикл повторяется, пока все элементы не будут отсортированы.
- Возвращается ничего не возвращающая функция.