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