#c #sorting #struct #selection #bubble-sort
#c #сортировка #структура #выбор #пузырьковая сортировка
Вопрос:
Я не знаю, как создать функцию для сортировки массива структур по значениям. Любые советы полезны.
Я не понимаю, как передать значения в функцию, а затем отсортировать список структур по возрасту, а затем по имени.
Я хочу посмотреть, как организовать массив структур, поскольку позже мне придется использовать несколько файлов с именами, возрастом, идентификаторами.
//- Functions needed
//Swap
//Selection sort
//Bubble sort
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct person
{
int age;
double id;
char name[64];
} person;
int main()
{
person **array = calloc(2, sizeof(person*));
int sizes[2];
for (int i = 0; i < 5; i ) {
array[i] = calloc(sizes[i], sizeof(person));
}
//Num1
strcpy(array[1][0].name, "0yblTP");
array[1][0].id = 7.567;
array[1][0].age = 34;
//Num 2
strcpy(array[1][1].name, "t700nwzB");
array[1][1].id = 8.6576;
array[1][1].age = 85;
//Num3
strcpy(array[1][2].name, "Vx8eR");
array[1][2].id = 179;
array[1][2].age = 59;
//Num4
strcpy(array[1][3].name, "n5FUgA");
array[1][3].id = 1.082797;
array[1][3].age = 45;
//Num5
strcpy(array[1][4].name, "Bzm9dq");
array[1][4].id = 179;
array[1][4].age = 23;
}
Ответ №1:
я думаю, что «отправить массив person» в функцию сортировки, и сортировка их в функции хороша для решения вашей проблемы.
void main {
//Swap (amp;person, amp;person) === Swap(amp;array[1][i], amp;array[i][j])
//Selection sort(array[1])
//Bubble sort(array[1])
}
вот так. это отправит адрес вашего массива person каждой функции сортировки, поэтому вам просто нужно выполнить каждую функцию внутри.
void selectionSort(person*) {
for(int i = 0; i < length of person array; i ) {
(algorithm for sorting your person by age, name)
you can use them by person[i].age
}
}
вот так.
-
я думаю, что это лучше, чем ваше умение помещать struct в массив
person* A = calloc.. A.name = ".." A.id = ".." A.age = ".." //and then put your struct in the array array[1][i] = A;