Tri par tas en C
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Tri par tas en C



  1. #1
    invite9eb6db85

    Tri par tas en C


    ------

    Bonjour,

    j'ais bati le code suivant en me basant sur un tri à bulle qui m'étais donné, afin d'avoir juste à changer le nom de la fonction (sans modifier ses paramètre) lors de l'appel pour changer la méthode de trie...
    Je dois effectuer la même chose mais en mettant au point le tri par tas... et c'est sans succès
    Si quelqu'un peut m'aider ^^

    Code:
    int triSelection(Tab* tableau){
    	int i,j,indiceMin,temp,compteur = 0;
    	for(i = 0; i<tableau->taille; i++){
    		indiceMin = i;
    		for(j = i+1; j<tableau->taille; j++){
    			compteur++;
    			printf("\n Nombre de Comparaison Actuelle: %d.... \n", compteur);
    			affichageTab(tableau);
    			if(tableau->tab[indiceMin] > tableau->tab[j]){
    				indiceMin = j;
    			}
    		}
    		//echange val
    		temp = tableau->tab[i];
    		tableau->tab[i] = tableau->tab[indiceMin];
    		tableau->tab[indiceMin] = temp;
    		
    	}
    	return compteur;
    }

    Merci !

    PS: C'est voulu, que mon code affiche le tableau à chaque parcours (et compte les comparaisons)...

    -----

  2. #2
    danyvio

    Re : Tri par tas en C

    J'ai bien étudié ce bout de programme. Pour avoir programmé ce type de tri un nombre incalculable de fois, je ne vois pas d'erreur évidente dans cette partie, même si, personnellement, j'effectuais l'échange à l'intérieur de la boucle ici indicée par j, ce qui permettait d'effectuer plusieurs échanges au cours de cette boucle. Voir peut-être la définition des variables dans le programme appelant....
    ATTENTION :
    En regardant encore plus près, il faut peut-être mettre for(j = i+1; j<=tableau->taille; j++)
    au lieu de for(j = i+1; j<tableau->taille; j++) pour effectuer les tests jusqu'au dernier élément du tableau !
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  3. #3
    invite9eb6db85

    Re : Tri par tas en C

    Bien ce tri marche, mais y faut que je le modifie pour qu'il devienne un tri par tas, et non un tri par selection... Et j'ais jamais vu le tri par tas, je sais pas trop comment m'y prendre pour le modifier...

  4. #4
    whoami

    Re : Tri par tas en C

    Bonjour,

    L'algorithme du tri par tas est bien connu, et il est facile à implémenter en C.

    Donc : au boulot !

    ps : il vaut mieux repartir d'une fonction vide plutôt qu'essayer d'en modifier une déjà existante, ça évite les erreurs d'étourderie.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. algorithme de tri par sélection
    Par invite8b421ec7 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 11/05/2009, 22h10
  2. Réponses: 8
    Dernier message: 20/12/2008, 07h36
  3. Flux RSS : Tri par Mot Clé
    Par invitec316e987 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 05/11/2008, 10h20
  4. Démarrage moteur tri 220V par réhostat
    Par invitea800ac64 dans le forum Technologies
    Réponses: 1
    Dernier message: 01/05/2008, 17h27
  5. Réponses: 2
    Dernier message: 02/11/2007, 12h10