Сортировка структуры по одному из полей методом пузырька - 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
. - После завершения внутреннего цикла, внешний цикл повторяется, пока все элементы не будут отсортированы.
- Возвращается ничего не возвращающая функция.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д