Сортировка структуры по одному из полей методом пузырька - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Прошу помочь мне в написании сортировки по опр. полю,например, по марке. Вот структура:
struct car{
    unsigned nr;
    char marka[100];
    char model[100];
    char cvet[100];
    char strana[100];
    unsigned cena;
}car1, car2;
Файл car.dat Пользуюсь visual studio 2013 ЗАРАНЕЕ СПАСИБО

Решение задачи: «Сортировка структуры по одному из полей методом пузырька»

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;
            }
        }
    }
}

Объяснение кода листинга программы

  1. Входные данные: массив структур array и размер массива size.
  2. Создаются две переменные i и j для использования в циклах.
  3. Создается временная структура tmp типа struct car.
  4. Запускается внешний цикл от 0 до size для прохода по всем элементам массива.
  5. Внутренний цикл начинается с j = size - 1 и уменьшается на 1 с каждой итерацией, пока не станет меньше i.
  6. Проверяется, меньше ли поле brand текущего элемента по сравнению с предыдущим. Если меньше, то выполняется:
    • Создается временная переменная tmp, которая содержит текущий элемент.
    • Текущий элемент заменяется значением предыдущего элемента.
    • Предыдущий элемент заменяется временной переменной tmp.
  7. Внутренний цикл завершается, когда j становится больше или равно i.
  8. После завершения внутреннего цикла, внешний цикл повторяется, пока все элементы не будут отсортированы.
  9. Возвращается ничего не возвращающая функция.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы