tri fusion en C

tri fusion en C - C - Programmation

Marsh Posté le 26-11-2008 à 01:22:32    

bonsoir a toute et tous j'ai un bout de code et dans l'avant derniére boucle for j'ai un tableau tmp dont je ne sais pas quel indice de case je doit lui affécter quelqu'un peut-il m'aider;
j'ai tester pas mal d'indice mais sa ne marche pas voila le code

  
Code :
  1. int tri_fusion_bis(long tab[], int N,int debut){ //deuxieme fonction pour pas avoir une signature moche avec le debut du tableau
  2. if(N==1){return 0;} //cas d'arret
  3.  
  4. int size1,size2; //taille des deux tableau qui seront traité recursivement
  5. size1=(N/2);
  6. size2=N-size1; // pour prendre en charge les tableau impaire
  7.  
  8. tri_fusion_bis(tab,size1,debut);//les deux appele recursif
  9. tri_fusion_bis(tab,size2,debut+size1);
  10.  
  11.  
  12. allocation_tableau(tmp,long, N ); // tableau temporaire resultat
  13. int indice1=debut, indice2=debut+size1; //les deux indice pour savoir on t'en est dans l'avancement de tes deux tableau
  14. int i;
  15. for (i=debut;i<=debut+N;i++){
  16.     
  17.     if((indice1<debut+size1)&&(tab[indice1]<tab[indice2])){
  18.         indice1++;
  19.         tmp[N+i+1]=tab[indice1];}
  20.  
  21.     else{
  22.         if (indice2<debut+size2){
  23.             indice2++;
  24.             tmp[N+i+1]=tab[indice1];}
  25.         else{
  26.             indice1++;
  27.             tmp[N+i+1]=tab[indice1];}
  28.  
  29. }
  30. //deux indice pour savoir ou on est apres on compare qui est le plus petit, et attention si on est a la fin de pas faire de comparaison en sortant du tableau donc on met celui de l'autre tableau : c'est la raison pour laquel je verifie indice1<debut+size1 et aussi indice2<debut+size2
  31.  
  32. }
  33. for(i=0;i<N;i++){
  34. tab[i]=tmp[i];}
  35. return 0;
  36. }
 

Édité par Elmoricq : ajout des balises code.

Message cité 1 fois
Message édité par Elmoricq le 26-11-2008 à 02:41:51
Reply

Marsh Posté le 26-11-2008 à 01:22:32   

Reply

Marsh Posté le 26-11-2008 à 10:16:02    

Ç'aurait été bien de couper la dernière ligne de commentaire.

Reply

Marsh Posté le 26-11-2008 à 11:07:19    

crops a écrit :

Édité par Elmoricq : ajout des balises code.


Tu aurais tout de même pu corriger les indents ainsi que les nombreuses fautes de d'orthographe, de grammaire et de ponctuation :o
 
Voire même répondre à la question :o
 
C'est du boulot fait à moitié. :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-11-2008 à 11:16:59    

Vu l'heure à laquelle je faisais ça, par pur désoeuvrement le temps qu'un traitement se finisse (ouais, je bosse aussi la nuit), j'ai pas cherché très loin. En fait j'ai même pas regardé le code. [:joce]

Reply

Marsh Posté le 26-11-2008 à 11:18:36    

Hmm, je viens de regarder le code, et le peu de neurones encore en vie viennent de demander pitié. C'est quoi un "tri fusion" ?

Reply

Marsh Posté le 26-11-2008 à 11:35:31    

http://fr.wikipedia.org/wiki/Tri_fusion
 

Citation :

Le tri repose sur le fait que pour fusionner deux listes/tableaux trié(e)s dont la somme des longueurs est n, n-1 comparaisons au maximum sont nécessaires.


 
Y'a un joli tableau sur la page wikipedia


Message édité par sircam le 26-11-2008 à 11:35:40

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-11-2008 à 11:41:32    

Ah c'est un vrai algo de tri, je ne le connaissais pas.
 
En plus y a même le code C qui va avec. Du coup crops peut aller le zieuter et s'en inspirer pour voir ce qui ne colle pas dans son programme.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed