DOCUMENT REALISE PAR

SANGARE SOULEYMANE

sangsoulinter@yahoo.fr

(00225) 08281648

Recherche
Recherche du plus petit élément d'un tableau
• Paramètres en entrée : un tableau t de N entiers. On pourra identifier ce tableau à une fonction totale de l'intervale entier de 1 à N vers les nombres naturels (on identifie les entiers machines aux nombres naturels). Ce qu'on l'on peut noter avec Paramètres en sortie : l'entier min. Spécifications : min doit contenir la valeur du plus petit élément du tableau. Formellement : . Avec ran le co-domaine (range en anglais)de t. • Algorithme :

• •

Soit
t[N] : Tableau d'Entier // Soit min : Entier // Soit i : Entier // Soit min := t[1]; // min = t(1) pour i de 2 à N // si t[i] < min alors // min := t[i] // finsi // finPour //mint(m,1,N)

Recherche d'une valeur dans un tableau
• • • • Paramètres en entrée : un tableau t de N entiers (indicé de 1 à N) et une valeur v Paramètres en sortie : le booléen trouvé et l'entier indice. Spécifications : le booléen trouvé doit être à vrai si v se trouve dans le tableau. La valeur d' indice est alors le plus petit indice de la case contenant la valeur v dans le tableau. Algorithme :

t[N] : Tableau d'Entier v : Entier i, indice : Entier trouve : Booleen; trouve := FAUX indice := -1 i := 0 tant que non trouve ET i <= N si t[i] = v alors trouve := true indice := i sinon i := i+1 2

finsi fin tant que

Somme des éléments d'un tableau
• • • • Paramètres en entrée : un tableau de N entiers Paramètres en sortie : l'entier s. Spécifications : s doit être égal à la somme des éléments du tableau. Algorithme :

t[N] : Tableau d'Entier i : Entier s := 0; pour i de 1 à N s := s + t[i] fin pour

Recherche du nombre d'occurrences
• • • • Paramètres en entrée : un tableau de N entiers et une valeur v Paramètres en sortie : l'entier nb. Spécifications : nb doit être égal au nombre de fois que la valeur v apparait dans le tableau. Algorithme :

t[N] : Tableau d'Entier v : Entier i, nb : Entier nb := 0 pour i de 1 à N si t[i] = v alors nb := nb+1 finsi fin pour

Algorithme Recherche Dichotomique
fonction rechercheDicho(e : entier, n : entier, t : tableau entier[0..n-1]):entier
début debut <- 0 fin <- n-1 trouve <- faux tant que debut <= fin et non trouve faire i <- (debut+fin)÷2 si t[i] = e alors trouve <- vrai sinon si t[i] > e alors fin <- i-1 sinon debut <- i+1 fsi fsi ftant si trouve alors indice <- i sinon indice <- -1 fsi retourne indice fin

3

Lexique :
e : entier, élément recherché n : entier, taille du tableau t : tableau entier[0..n-1], tableau trié par ordre croissant debut : entier, début de la zone de recherche fin : entier, fin de la zone de recherche trouve : booléen, faux tant que l'élément cherché n'est pas trouvé i : entier, indice de la case du milieu de la zone de recherche indice : entier, indice de l'élément recherché ou -1 s'il n'est pas trouvé

Algorithme d'échange
Algorithme Echange (t : tableau d'entiers ; i,j : entiers) { Echange le contenu des cases i et j dans le tableau t } Lexique pro : entier Début
pro := t[i] t[i] := t[j] t[j] := pro

Fin

Tris
Les algorithmes de tri
Tri par sélection
• • Paramètre en entrée/sortie : Un tableau t de N entiers T[1..N]; Spécifications : en sortie t doit être trié du plus petit au plus grand.

t[N] : tableau d'entier i,j,min,temp,indicemin, aux : entier pour i de 1 à N - 1 min := t[i] indicemin := i pour j de i + 1 à N si t[j] < min alors min := t[j] indicemin := j fin si fin pour aux := t[i] t[i] := t[indicemin] t[indicemin] := aux fin pour

Tri bulle
• • Paramètre en entrée/sortie : Un tableau t de N entiers T[1..N]; Spécifications : en sortie t doit être trié du plus petit au plus grand.

t[N] : tableau d'entier 4

i, nb, temp : entier repeter nb := 0 pour i de 1 à N - 1 si t[i] > t[i+1] alors aux := t[i] t[i] := t[i+1] t[i+1] := aux nb <- nb + 1 fin si fin pour jusqu'à nb = 0

Algorithme TriBulles (t : tableau d'entiers ; n : entier) { Trie par ordre croissant le tableau t contenant n éléments } Lexique i,j : entier Début
Pour i := 1 à n-1 faire Pour j := 1 à n-i faire Si t[j] > t[j+1] Alors Echange(t,j,j+1) Fin Si Fin Pour Fin Pour

Fin

Tri rapide
On choisit le pivot de manière aléatoire dans le tableau. Ensuite on inverse le pivot de sa position à celle du premier élément du tableau (indice 1) puis on fait une comparaison avec tous les éléments du tableau. S'il y a un élément du tableau qui lui est supérieure alors il y a échange des éléments. Cette comparaison s'arrêtera quand l'indice gauche du tableau (ici i) sera plus grand que l'indice droit du tableau (ici j). Apres cette arrêt de la fonction Partitionner on retourne l'indice j et on rappel la procédure Tri_rapide
FONCTION Partitionner (A: tableau [1..n] d’entiers, p:entier, r: entier):entier Var: x, i, j, temp: entier bool: booleen Début x= A[p] i= p-1 j= r+1 bool= vrai Tant que (bool) faire Répéter j= j-1 jusqu'à A[j] <=x Répéter i= i+1 jusqu'à A[i] >=x bool= faux Si i < j alors temp= A[i] A[i]= A[j] A[j]= temp bool= vrai Sinon Retourner j finsi Fin tantque Fin 5

PROCÉDURE Tri_rapide (A : tableau [1..n], p : entier, r : entier) Var q : entier Début Si p < r alors q= Partitionner(A,p,r) Tri_rapide(A,p,q) Tri_rapide(A,q+1,r) Fsi Fin

Tri comptage
// Code java :présenté par simoelma // T.length:taille du tableau static void triparcomptage(int T[]) { int i,s=0,k; int nb [] = new int [T.length]; int res [] = new int [T.length]; for(i=0;i<T.length;i++) { for(i=0;i<T.length;i++) { for(k=0;k<T.length;k++) { if(T[i]>T[k]) { s++; } nb[i]=s; } res[nb[i]+1]=T[i]; s=0; } System.out.println("***tableau est trie***\n"); for(i=0;i<T.length;i++) { System.out.println(res[i]+""); } } }

Tri par paquets
Tri-paquet (A) : n := longueur(A) ; pour i de 1 à n faire insérer A[i] dans la liste B[ÎnA[i]°] pour i de 0 à n-1 faire trier la liste B[I] par le tri insertion concaténer les listes B[0], B[1], …, B[n-1] dans l’ordre

6

Sign up to vote on this title
UsefulNot useful