Lycée   >   Premiere   >   NSI   >   Algorithmes de recherche : parcourir un tableau

Algorithmes de recherche : parcourir un tableau

  • Fiche de cours
  • Quiz
  • Profs en ligne
Objectifs
  • Utiliser une instruction for pour parcourir un tableau.
  • Écrire un algorithme de recherche d’un élément dans un tableau.
Points clés
  • Le cout d’un algorithme caractérise l’efficacité de celui-ci. En NSI, il correspond à son temps d’exécution.
  • Le cout d’une recherche dans un tableau est linéaire en n la taille du tableau.
  • Le langage Python permet d’utiliser l’instruction for appliquée aux tableaux de deux manières différentes : à partir des indices avec range() et len() ou en contrôle de flux.
Pour bien comprendre
  • Manipuler les tableaux
  • Définir une fonction
  • Utiliser une instruction conditionnelle
1. Algorithme de recherche et cout de la recherche
a. Algorithme
Un algorithme est une suite finie d’instructions qui permet de résoudre un problème.
Un algorithme de recherche dans un tableau est un algorithme qui permet d’y rechercher un élément vérifiant des critères définis à l’avance.

Voici ci-dessous un algorithme classique de recherche d’un élément b dans un tableau Tab (non vide et non trié) de taille n. Cet algorithme affecte le booléen Vrai à la variable trouve si b est un élément de Tab et affecte Faux sinon.

trouve ← Faux Faux est affecté à la variable trouve
Pour i allant de 0 à n-1 i = 0, puis i = 1, puis i = 2, puis… i = n  1
   Si b = Tab[i], alors Si Tab[i] est égal à b, alors
      trouve ← Vrai on affecte Vrai à la variable trouve
   FinSi Fin de l’instruction « Si »
FinPour Fin de l’instruction « Pour »
Remarque
i prend des valeurs de 0 à n  1 car, en informatique, les tableaux sont généralement indexés à partir de 0.
b. Le cout d'une recherche
Le cout d’une recherche correspond à une estimation du temps d’exécution de cette recherche.
Le cout d’une recherche dépend directement de la taille du tableau. Déterminer ce cout revient à en estimer le nombre d’affectations et le nombre de comparaisons.
  • Une affectation est une procédure qui permet d’attribuer une valeur à une variable.
  • Une comparaison est une instruction qui met en jeu deux variables et qui renvoie True ou False (Vrai ou Faux).

L’algorithme de la sous-partie précédente, appliqué à un tableau comportant n éléments, nécessite :

  • n + 1 affectations : une affectation avant l’instruction for, et n affectations pendant celle-ci ;
  • n comparaisons : dans l’instruction pour.
Si le cout d’une affectation et celui d’une comparaison sont respectivement notés a et c, alors le cout de l’algorithme est égal à :
a × (n + 1) + c × n = (a + c)n + a
(car a × (n + 1) + c × n = an + a + cn).

On obtient une fonction affine en n. On dit alors que le cout d’une recherche dans un tableau est linéaire en n la taille du tableau.

À retenir
Le cout d’une recherche dans un tableau non trié est linéaire.
2. Utiliser l'instruction for pour parcourir un tableau

On implémente un algorithme de recherche en Python de deux manières différentes : à partir des indices avec range() et len() ou en contrôle de flux.

Implémenter un algorithme, c’est le traduire dans un langage de programmation.
a. Avec range() et len()
Méthode
Pour écrire un script de recherche d’un élément dans un tableau, on peut utiliser les instructions avec range() et len().
  • L’instruction len(Tab) renvoie la longueur du tableau Tab, c’est-à-dire son nombre d’éléments.
    Exemple
    Si Tab = [1,2,5,7], alors len(Tab) retournera 4.
  • L’instruction for i in range(n) affecte successivement à la variable i tous les entiers de 0 à n  1.

En Python, la fonction recherche1(Tab, b) implémente un algorithme de recherche de b dans Tab : elle retourne True si b est un élément de Tab et False sinon.

def recherche1(Tab, b): On définit la fonction recherche1
   trouve = False Faux est affecté à la variable trouve
      for i in range(len(Tab)): i = 0, puis i = 1, puis i = 2, puis… i = n  1
         if b == Tab[i]: Si Tab[i] est égal à b, alors
            trouve = True on affecte Vrai à la variable trouve
      return trouve
On retourne la variable trouve
b. En contrôle de flux
En Python, le contrôle de flux permet de parcourir n’importe quelle séquence (chaines de caractères, tableaux, etc.) sans utiliser les indices de ses éléments.
Méthode
Pour parcourir un tableau en contrôle de flux, on utilise l’instruction for elt in Tab.

L’instruction for elt in Tab permet d’affecter successivement à la variable elt chaque élément du tableau Tab.

Exemple
Si Tab=[1, 2, 5, 7], for elt in Tab signifie que que elt prend successivement les valeurs 1, 2, 5 et 7.

En Python, la fonction recherche2 suivante implémente l’algorithme de recherche de b dans Tab.

def recherche2(Tab, b): On définit la fonction recherche2
   trouve = False Faux est affecté à la variable trouve
      for elt in Tab: elt prend les valeurs de Tab
         if b == elt: Si elt est égal à b, alors
            trouve = True on affecte Vrai à la variable trouve
      return trouve On retourne la variable trouve

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Recevez l'intégralité des bonnes réponses ainsi que les rappels de cours associés :

Votre adresse e-mail sera exclusivement utilisée pour vous envoyer notre newsletter. Vous pourrez vous désinscrire à tout moment, à travers le lien de désinscription présent dans chaque newsletter. Pour en savoir plus sur la gestion de vos données personnelles et pour exercer vos droits, vous pouvez consulter notre charte.

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

Fiches de cours les plus recherchées

NSI

Algorithmes de recherche : rechercher un extremum

NSI

Algorithmes de recherche : obtenir une moyenne, une médiane

NSI

Trier par insertion

NSI

Trier par sélection

NSI

Utiliser les invariants pour corriger un algorithme

NSI

Comprendre et utiliser l'algorithme des k plus proches voisins

NSI

L'algorithme de recherche dichotomique dans un tableau trié

NSI

Résoudre un problème avec un algorithme glouton

NSI

Écrire un entier positif dans une base donnée

NSI

Passer de la représentation d'une base à une autre

NSI

Comprendre les bases de la représentation binaire

NSI

Effectuer des opérations en binaire

NSI

Utiliser la méthode du complément à 2 en binaire

NSI

Représenter les nombres réels en binaire

NSI

Comprendre les booléens

NSI

Utiliser les opérateurs booléens élémentaires

NSI

Obtenir une table de vérité d'une expression booléenne complexe

NSI

Représenter un texte en utilisant différents encodages