Recherche

Recherche dichotomique

Énoncé

Saisir N avec 1 ≤ N ≤ 100, puis remplir un tableau T de N entiers triés par ordre croissant. Saisir un entier Cible. Écrire une fonction Dichotomie qui retourne un indice de Cible dans T, ou −1 si elle est absente. Afficher le résultat.

Exemples et cas limites

Saisissez ces valeurs dans la console pour vérifier votre résultat :

Saisir N, puis les N entiers par ordre croissant, puis Cible. Une valeur inférieure à la précédente est redemandée ; les doublons sont acceptés.

Entrée
N = 5
t[0] = 1
t[1] = 3
t[2] = 5
t[3] = 8
t[4] = 12
Cible = 8
Sortie attendue
3
Entrée
N = 3
t[0] = -4
t[1] = 0
t[2] = 2
Cible = -4
Sortie attendue
0
Entrée
N = 1
t[0] = 5
Cible = 6
Sortie attendue
-1

Complétez les modules marqués par un commentaire dans le code de départ. Les modules déjà écrits permettent de saisir vos données. Exécutez les cas de test et comparez la sortie attendue, ou ouvrez directement l’onglet Correction.

Code algorithmique

recherche_dichotomique.algo
1algorithme recherche_dichotomique
2debut
3 saisir(n)
4 remplir(t, n)
5 saisircible(cible)
6 indice ← dichotomie(t, n, cible)
7 afficher(indice)
8fin
9
10procedure saisir(@n : entier)
11debut
12 repeter
13 ecrire("N = ")
14 lire(n)
15 jusqua 1 ≤ n ≤ 100
16fin
17
18procedure remplir(@t : tab, n : entier)
19debut
20 pour i de 0 à n - 1 faire
21 repeter
22 ecrire("t[" + convch(i) + "] = ")
23 lire(t[i])
24 jusqua i = 0 ou t[i] ≥ t[i - 1]
25 fin_pour
26fin
27
28procedure saisircible(@cible : entier)
29debut
30 ecrire("Cible = ")
31 lire(cible)
32fin
33
34fonction dichotomie(t : tab, n : entier, cible : entier) : entier
35debut
36 // compléter le traitement demandé dans l’énoncé.
37 retourner -1
38fin
39
40procedure afficher(resultat : entier)
41debut
42 ecrire_nl(resultat)
43fin

Méthode

  1. Examiner le milieu de l’intervalle courant.
  2. Éliminer la moitié qui ne peut pas contenir la cible.
À retenir :

La dichotomie exige un tableau trié. Utiliser DIV 2 pour obtenir un indice entier.