Informatique et Sciences du Numérique 2012
Appliquons cet algorithme à un tableau.
Ecrire le programme Python echange.py qui à partir de :
tablo=[6,8,7,1,9,78,1,0,0,0,85,3,-1,6,12,21,5,4,-1,0,15,6,7,-1,-2,3,24,100,5,3,2,49,19,54,7,8,3]
donne :
tablo=[3,8,7,1,9,78,1,0,0,0,85,3,-1,6,12,21,5,4,-1,0,15,6,7,-1,-2,3,24,100,5,3,2,49,19,54,7,8,6]
c'est à dire qui échange la première et la dernière valeur du tableau.
Ecrire le programme Python somme.py qui fasse la somme de toutes les valeurs du tablo
et affiche le résultat. La somme est 546.
Algorithme :
On définit une variable somme initialisée à 0.
A chaque boucle, on ajoute à somme la valeur du tableau et on affecte à somme le
résultat :
Ecrire le programme Python dedans.py qui dise si une valeur entrée par l'utilisateur
( x=int(input('x? :')) )est dans le tablo (vrai) ou non (faux)?
On comprend qu'il faudra utiliser un booléen.
Recherche dichotomique :
dichotomique = "partage en deux".
Le programme dedans.py ci dessus effectue un nombre de comparaison égal à la taille du
tableau. Cela peut faire beaucoup.
Peut on trouver un élément en moins de comparaison?
Oui si le tablo est rangé ou trié c'est à dire si les éléments sont classés.
Par exemple dans le :
tablo_trie=[2,3,8,9,10,12,15,17,21,25,29,31,56,66,67,69,71,75,81,89,90,93,100,101,148,221,224]
(contenu dans exemples_tablo.txt à reproduire par copier-coller) où les nombres sont classés dans
l'ordre croissant.
Le recherche dichotomique consiste à diviser le tableau en deux. Si l'élément recherché n'est
pas dans une moitié, il est dans l'autre. Il suffit de comparer l'élément recherché avec le dernier
élément de la première moitié :
si élément_cherché=<dernier element de la première moitié: (comparaison)
l'élément est dans la première moitié
sinon:
l'élément est dans la deuxième moitié
On recommence jusqu'à ce que l'élément soit trouvé ou qu'il ne soit plus possible de faire une
moitié de ce qui reste du tableau (alors l'élément n'est pas trouvé).
On fait une comparaison à chaque fractionnement du tableau en 2 soit si le tableau à 25
éléments : 25 12 6 3 1 environ 4 fractionnements donc 4 comparaisons contre 25 si on
compare avec les éléments un à un.