SDD Recherche Et Tri
Les algorithmes de recherche et de tri
I) Les recherches :
1) Recherche simple dans un tableau non trié :
Algorithme
Début i <- 1 tant que ( i<=n et T[i]!=x) i <- i+1 fin tant que si ( i=n +1 ) ecrire (‘’la valeur n’existe pas dans le tableau.’’ ) sinon ecrire(‘’la valeur se trouve à la position’’, i) fin si fin Programme en C
{
int i; i=0; while(i<n && T[i]!=x) i++; if(i==n) printf(‘’la valeur %d n’existe pas dans le tableau.\n’’, x); else printf(‘’la valeur %d se trouve à la position %d\n’’, x, i);
}
2) Recherche simple dans un tableau non trié avec nombre d’occurrences et positions :
Algorithme
Début cpt <- 0 pour i allant de 1 à n pas<- 1 si (T[i]=x) cpt<- cpt+1 indiceX[cpt]<- i fin si fin pour si ( cpt = 0) ecrire (la valeur n’existe pas dans le tableau ) sinon ecrire ( la valeaur existe cpt fois dans les positions :) pour i allant de 1 à cpt pas <- 1 ecrire (indiceX[i]) fin pour fin si
Fin
programme en C
{
int indiceX[200]; int cpt, i; cpt=0; for(i=0;i<n;i++) if(T[i]==x) { indiceX[cpt]=i; cpt++;
}
if(cpt==0) printf(‘’la valeur %d n’existe pas dans le tableau.\n’’, x); else { printf(‘’la valeur %d se trouve %d fois aux positions:\n’’, x, cpt); for(i=0;i<cpt;i++) printf(‘’%d ‘’, indiceX[i]); printf(‘’\n’’); }
1
3) Recherche simple dans un tableau trié :
Algorithme
Début i <- 1 tant que (i<=n et T[i]<x) i <- i+1 fin tant que si (i=n+1 ou T[i]>x) ecrire (‘’la valeur n’existe pas dans le tableau.’’ ) sinon cpt <- 0 tant que (i+cpt<=n et T[i+cpt]=x) cpt<- cpt +1 fin tant que ecrire (‘’la valeur x se trouve cpt fois à partir de la position ’’, i ) fin si fin Programme en C
{
int i, cpt; i=0; while(i<n && T[i]<x) i++; if(i==n || T[i]>x) printf(‘’la valeur %d n’existe pas dans le tableau.\n’’, x); else { cpt=0; while(i+cpt<n && T[i+cpt]==x) cpt++; printf(‘’la valeur %d se trouve %d fois à partir de la position: %d\n’’, x, cpt, i);
}
}
4) Recherche dichotomique (tableau trié) : algorithme debut debut <- 1 fin <- n milieu <- (debut + fin)/2