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