06/01/2019, 18h48
#1
Membre à l'essai
Tri par insertion
Bonjour
Ça fait un mois que je galère avec les algos de tri, à chaque fois je relis le code je pense que je comprends mais je me trompe toujours
Je sais qu'il y a un problème avec mon raisonnement mais je finis par être fatiguée je n'arrive plus à réfléchir
Merci beaucoup d'avance
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #include
#include
#include
void randomise ( int * array, int grandeur)
{
for ( int i = 0; i < grandeur; i++)
array [ i] = rand ()% 51;}
void affiche ( int * array, int grandeur)
for ( int j = 0; j < grandeur; j++)
printf ( "%4d", array [ j]);
printf ( " \n ");}
int main ()
srand ( time ( NULL));
int * tableau;
int taille;
printf ( "quelle est la taille du tableau?
Tri Par Insertion C.E
void free_list(struct node *head) {
//struct node *releasep;
//while( head! = NULL){
// releasep = head;
// head = head->next;
//
// free(releasep->value);
// free(releasep);
//}}
J'ai des problèmes avec ma méthode de tri. J'y suis même allé étape par étape et je ne trouve pas le problème. Ci-dessous se trouve la sortie de mon programme. XXXXXXX@linus:~/350/c_memory_activity$ gcc -o test listsort. c
XXXXXXX@linus:~/350/c_memory_activity$. /test
List: 9 1 5 2 8 3
List: 1 9 5 2 8 3
XXXXXXX@linus:~/350/c_memory_activity$
PS: l'algorithme de tri d'origine était ici: tri par insertion de liste chaînée
Eh bien, cette boucle n'ira qu'une seule fois (dans le bon cas):
Puisqu'il s'agit de devoirs, juste un indice: qui est tmpNxt et lequel est tmpPtr après la première itération? les autres lignes à regarder sont celles-ci:
tmpNxt = tmpNxt->next;
les deux exemples expliquent pourquoi seuls les deux premiers éléments ont été remplacés dans votre exemple. MByD a déjà signalé le problème (mon vote positif pour vous, MByD), donc avec cela résolu, j'aimerais apporter quelques conseils.
Tri Par Insertion C.K
Un livre de Wikilivres.
Tri Par Insertion Java
HowTo C Howtos Fonction de tri en C Créé: February-21, 2021 Utiliser la fonction qsort pour trier un tableau d'entiers en C Utilisez la fonction qsort pour trier un tableau de chaînes de caractères en C Cet article explique plusieurs méthodes d'utilisation de la fonction de tri standard de la bibliothèque en C. Utiliser la fonction qsort pour trier un tableau d'entiers en C La fonction qsort implémente une opération de tri quelque peu générique pour différents tableaux d'éléments de données. Plus précisément, qsort prend le pointeur de fonction comme quatrième argument pour passer la fonction de comparaison pour un tableau d'éléments donné. Dans ce cas, nous avons implémenté la fonction intCompare pour comparer un tableau d'entiers en utilisant qsort. Notez que intCompare devrait avoir le type - int (*compar)(const void *, const void *) comme spécifié par le prototype qsort. Par conséquent, nous allons d'abord placer les arguments p1 / p2 sur les pointeurs int et ensuite les déréférencer pour accéder aux valeurs elles-mêmes.
Dans ce cas, nous avons déclaré et initialisé le tableau de pointeurs char, dont les éléments sont triés avec un seul appel à la fonction qsort. Notez que le casting et le déréférencement sont la partie nécessaire de la fonction de comparaison car ils prennent les deux paramètres comme types de pointeurs void.