Bonjour j'aimerais savoir quand on tri (avec le tri par tas par exemple) des structs comment ça se passe doit-on passer par des pointeurs ou par un tableau de struct ?

Comment on doit faire pour les échanges entre struct ?

Exemple si j'ai une struct de se style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
struct personne
{
char *nom;
char *prenom;
int age;
};
Imaginons que 10 personnes doivent rentrés leurs nom, prénom, âge ; tout d'abord dois-je déclarer un tableau de struct et donc faire :
personne Pers[10] ou bien faire : un tableau de 10 pointeurs pointant chacun sur une struct Personne comme ceci ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
typedef struct _personne
{
char *nom;
char *prenom;
int age;
}personne;
 
personne **Pers=malloc(10*sizeof*Pers); 
 
for(i=0;i<10;i++)
  tab[i]=malloc(sizeof**tab);
Ensuite si je dois trié les struct par ordre alphabétique des noms comment fait-on ?
Pour le tableau Pers[10] je pense qu'il faudra faire l'échange nom avec nom, prénom avec prénom, âge avec âge ? Comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
tmp=tab[0]->nom;
tab[0]->nom=tab[1]->nom;
tab[1]->nom=tmp;
 
tmp=tab[0]->prénom;
tab[0]->prénom=tab[1]->prénom;
tab[1]->prénom=tmp;
 
tmp=tab[0]->age;
tab[0]->age=tab[1]->age;
tab[1]->age=tmp;
Méthode que je trouve lourding.

En ce qui concerne le tableau de pointeur de struct ;
Quand le programme aura trouvé deux noms à échangés est-ce qu'il faudra faire l'échange de tous les noms prénoms et âge (comme vu si dessus) ou bien faudra t-il juste échanger les pointeurs?

Je sais pas si j'ai été clair, merci par avance pour votre aide.