Сортировка структуры - C (СИ)
Формулировка задачи:
Добрый вечер, подскажите как реализовать сортировку структуры, методом пузыря?
У меня есть вариант но не получается реализовать. Вообщем обмен данных будет происходить с помощью еще одной пустой структуры. Наброски кода такие:
Подскажите в чем ошибка.Заранее спасибо
Как то так.
struct p { char si[10]; int gi; }l[4]; struct l { char si[10]; int gi; }f[1]; int main() { int i=0,s=0; printf("vedi"); scanf("%s", l[0].si); scanf("%d", &l[0].gi); printf("vedi"); scanf("%s", l[1].si); scanf("%d", &l[1].gi); if (l[i].gi < l[i + 1].gi) { f[0]= l[i]; l[i] = l[i + 1]; l[i + 1] = o; } return 0;
Еще есть вариант с обменом с помощью структуры которую мы используем. Тоесть у нас есть 100 структур из них мы используем 20, а обмен совершаем с помощью 100 структурой.
l[100]= l[i]; l[i] = l[i + 1]; l[i + 1] = l[100];
Решение задачи: «Сортировка структуры»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> #define SIZE 10 struct list { char name[10]; int val; }Array_List[SIZE]; int main() { int i, j; char str; for (i=0;i<SIZE;i++){ Array_List[i].val=(unsigned char)rand(); strcpy(Array_List[i].name,"Student"); printf("List = %5d Name - %5s\n",Array_List[i].val, Array_List[i].name); } printf("\n\n"); struct list tmp; for (i = 0; i < SIZE-1; i++){ for (j = SIZE-1; j > i; j--) { if (Array_List[j].val < Array_List[j-1].val) { tmp = Array_List[j-1]; Array_List[j-1] = Array_List[j]; Array_List[j] = tmp; } } } for (i=0;i<SIZE;i++) printf("List = %5d Name - %5s\n",Array_List[i].val, Array_List[i].name); getch(); return 0; }
Объяснение кода листинга программы
Список переменных и их значений:
- SIZE - размер массива, 10
- Array_List - массив структур, содержащих поля name и val
- i, j - индексы для обхода массива и сортировки
- str - временная переменная для работы со строками
- tmp - временная структура для обмена значениями Код выполняет следующие действия:
- Инициализирует значения поля val структур случайными числами, а поля name - строкой
Student
. - Выводит на экран значения поля val и name для каждой структуры в массиве.
- Проводит сортировку массива по убыванию значения поля val с помощью алгоритма пузырька.
- Выводит на экран отсортированный массив.
- Получает сигнал окончания работы программы (нажатие клавиши) и завершает выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д