Vous êtes sur la page 1sur 1

Recherche dans un tableau : Recherche dichotomique:

Tri_Sélection
Écrire un programme qui permet de saisir n entiers à mettre 1 2 3 4 5 6 7
0)DEF Proc Tri_selection (VAR T :TAB ; n :entier)
dans un tableau T puis une valeur v, puis vérifie si v existe dans V est ici si T[m] > v V est ici si T[m] < v 1)Pour i de 1 à n-1 faire
T ou non.
a=1 m b= n
premposmin(T:tab, i:entier, n:entier):entier
(milieu de a et b) [pos_min i] Pour j de i+1 à n faire
Recherche séquentielle Analyse de la fonction recherche_dicho: Si ( T[j] < T[pos_min])Alors
Analyse de la fonction Recherche: DEF FN recherche_dicho (T:TAB,n: entier,v:entier): Booléen
Résultat=recherche_dicho trouve pos_min j
DEF FN recherche (T:TAB, n: entier, v:entier): Booléen
Résultat=[] si T[i]=v alors recherche VRAI trouve=[a 1, b n, trouve FAUX] Finsi
sinon recherche FAUX Autre méthode : répéter
finsi Résultat= Recherche ← trouve [m (a+b) DIV 2] si T[m]=v alors trouve VRAI FinPour
i=[i 0]Répéter trouve=[i ← 0 , trouve ← faux] sinon si T[m]>v alors b m-1 Si ( pos_min < > i) Alors Permute(T[i], T[Pos_min])
i i+1 répéter sinon a m+1 Finsi
jusqu'a (T[i]=v) ou (i=n) i i+1 finsi
si t[i]=v alors trouve ←vrai FinPour
FIN recherche jusqu'a (trouve) OU (a>b) 2)Fin Tri_selection
Finsi
jusqu'a (trouve) ou (i = n) FIN recherche_dicho
Tri_Bulles
Fin Recherche Objet Type/Nature 0) DEF Proc Tri_Bulles (VAR T :TAB ; n :entier)
T.D.O.Locaux: Objet Type/Nature
T.D.O.Locaux: Trouve Booléen 1) Répéter
i entier a, b, m entier Echange faux
Remarque:
La recherche dichotomique s'applique sur un tableau trié. Pour i de 1 à n-1 faire
Algorithme de la fonction recherche: Algorithme de la fonction recherche_dicho:
0) DEF FN recherche (T:TAB, n: entier, v:entier): Booléen 0) DEF FN recherche_dicho (T:TAB,n: entier,v:entier): Booléen Si ( T[i] > T[i+1])Alors Permute(T[i], T[i+1])
1) i 0 1) a 1, b n, trouve FAUX Echange vrai
Répéter Autre méthode :
répéter
0) DEF FN recherche(t :tab, FinSi
i i+1
n :entier, v :entier) : booléen
m (a+b) DIV 2

Devoirs et examens sur : www.Kiteb.net


jusqu'a (T[i]=v) ou (i=n) 1) i←0 , trouve← Faux si T[m]=v alors trouve VRAI FinPour
2) si T[i]=v alors recherche VRAI 2) répéter sinon si T[m]>v alors b m-1 n n-1
sinon recherche FAUX i i+1 sinon a m+1
3) Fin recherche si t[i]=v alors trouve ←vrai finsi Jusqu'à (Echange = Faux) ou (n=1)
Finsi jusqu'a (trouve) OU (a>b) 2) Fin Tri_Bulles
jusqu'a (trouve) ou (i = n) 2) recherche_dicho trouve Tri_Insertion :
3) Recherche ← trouve
3) Fin recherche_dicho 0) DEF Proc Tri_Insertion (VAR T :TAB ;
4) Fin Recherche
En Pascal: En Pascal: n :entier)
Function recherche(T:tab;n:integer;v:integer):boolean; function recherche_dicho(T:tab;n:integer;v:integer):boolean; 1) Pour i de 2 à n faire
var i:integer; var a,b,m:integer;trouve:boolean; Tmp T[i]
begin begin j i Decaler(var T:tab, var j, v:entier)
i:=0; a:= 1 ; b:= n; trouve:=false; Tant que ( j >1) et (T[j-1] > Tmp ) faire
repeat repeat
m:=(a+b) div 2; T[j] T[j -1]
i:=i+1;
if T[m]=v then trouve:=true else j j–1
until (T[i]=v)or (i=n) ;
if (T[i]=v)then recherche:=true if T[m]>v then b:=m-1 else a:=m+1; FinTantQue
else recherche:=false; until (trouve)or (a>b); T[j ] Tmp
end; recherche_dicho:=trouve; FinPour
end; 2)Fin Tri_insertion