supression des doublons d'un tableau trié
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:
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.