Bonjour à tous,

Je souhaiterai supprimer les doublons d'un tableau. Pour se faire, j'ai utilisé une méthode empirique. Je parcoure le tableau trié en comptant son nombre d'éléments n sans les doublons. Je crée un autre tableau de taille n et je range les valeurs du tableau trié sans les doublons dans ce tableau.

Voici le code que j'ai utilisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
int nombre_doublon(double *tab, int size)
{ 
  register int i;
   int k=1;
   for(i=0;i<size-1;++i)
   {  
     if(tab[i]!=tab[i+1])
     { ++k;}
   }
   return(k);
}
 
int suprime_doublon(double **res,double *tab,int size)
{  
   double *t;
   int i,j,n_nondoublon;
   j=0;
 
    n_nondoublon=nombre_doublon(tab,size);
    t=Malloc(n_nondoublon,double);
 
   t[j]=tab[0];
   for(i=0;i<size;++i)
   {
      if(t[j]!=tab[i])
      { ++j;
      	t[j]=tab[i]; 
      }
 
   }  
   *res=t; 
   return(n_nondoublon);    
 }
j'aimerai savoir si mon code peut être optimisé, s'il n'existe pas en C des méthodes plus rapides. Car dans le cas d'un tableau trié de très grande taille ma méthode peut être très lente.