Table des matières
Recherche séquentielle dans un tableau
Présentation du problème
Imaginons une base de données contenant des entrées comme :
| Id | Nom | Prénom | Naissance | Adresse |
|---|---|---|---|---|
| 11 | Dupont | Élia | 12/04/1997 | 12 rue des Boulets |
| 25 | Leroy | Michel | 29/02/1996 | 3 avenue de la République |
| 21 | Aubert | Roland | 31/12/2000 | 11 rue Pirandello |
| … | … | … | … | … |
Supposons aussi que l'on veut trouver une ligne avec un Id particulier.
Cela revient à chercher un nombre dans un tableau.
On ne perd donc rien si on ne considère que la liste de nombres.
Recherche d'un nombre dans un tableau de nombres
Exemple : [11, 25, 21, ...]
Notre but est, pour un nombre needle (needle = aiguille) donné, de trouver, s'il existe, l'indice de la première occurrence de needle dans le tableau.
Exemple
Pour le tableau [11, 25, 21, 69, 41, 26, 14],
- la recherche de
41devrait renvoyer4, - la recherche de
17devrait renvoyer, selon le choix que l'on fera, soitNone, soit-1, soitFalse, soit encore une erreur.
Python contient déjà une telle fonction (testez en console):
>>> tableau = [11, 25, 21, 69, 41, 26, 14] >>> tableau.index(69) 3 >>> tableau.index(3) ValueError: 3 is not in list
Question de performances
De même qu'il existe diverses façons de trier une liste, plus ou moins performantes, il existe plusieurs façon de chercher un item dans une liste.
Quand on envisage un algorithme, il faut envisager :
- La correction : L'algorithme fait-il bien ce qu'il doit dans tous les cas ? N'y a-t-il pas des cas problématiques ?
- L'algorithme est-il rapide ?
On va s'intéresser à ces deux aspects.
