def tri_bulle(L):
n=len(L)
for i in range(n-1):
for j in range(1,n-i):
if L[j-1]>L[j]:
a=L[j]
L[j]=L[j-1]
L[j-1]=a
return L
Vous devez ˆetre capable de simuler l’ex´ecution de ces diff´erentes fonctions sur l’exemple suivant :
25 46 13 16 18 17 19 31 81 42 35 57 38 26 19 17 31 71 12 19 10
On peut encore am´eliorer cet algorithme, en particulier pour des listes peu d´esordonn´ee.
Avez-vous une id´ee ?
Vous pouvez voir sur le site : interstices.info une animation permettant de visualiser le fonctionnement
de tous ces algorithmes. (Googliser : interstices algorithme de tri)
2) Recherche d’un mot dans une chaˆıne de caract`eres.
a) Ecrire une fonction Python qui permet de dire si oui ou non un mot est dans un texte.
La sp´ecification de cette fonction sera :
def testliste((T,M):
"""str,str -> bool
renvoie si oui ou non le mot M est dans le texte T"""
b) Pour ceux qui vont plus vite, si vous avez fait a) en moins de 10 mn.
R´epondre `a la question pr´ec´edente avec la contrainte :
on ne compare jamais des chaines de caract`eres de plus d’un caract`ere.
Autrement dit :
- Vous avez uniquement droit aux comparaisons : T[i]==M[j].
- On s’interdit T[1:5]==’ABCD’ o`u T[1:5]==M
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Quelques exercices.
1) Faire une fonction en Python qui fusionne deux listes tri´ees.
Exemple : en partant des listes L1 = [1,5,6,8,9] et L2 = [2,5,10] on veut que la fonction sorte la liste .
[1,2,5,5,6,8,9,10]
2) a) Rappeler un algorithme de recherche d’une valeur dans une liste de nombres r´eels.
b) Ecrire un algorithme permettant de trouver une valeur dans une liste pr´ealablement tri´ee.
On essayera d’ˆetre plus efficace que lorsque ce qui a ´et´e vu en classe pour une liste non tri´ee. On justifiera
que l’algorithme est plus efficace.
c) Traduire les deux algorithmes pr´ec´edents en fonctions Python.
d) Expliquer comment v´erifier, avec des tests, que la deuxi`eme fonction est plus efficace que la premi`ere.
Indication :
pour calculer le temps d’ex´ecution d’un programme on peut utiliser la fonction time du module time.
3) L(0, ..., n −1) d´esigne une liste de nlistes de r´eels,
Ecrire une fonction Python permettant de trier les listes de Ldans l’ordre croissant de leur premi`ere composante.
Exemple En partant de la liste L= [[5,6,4],[3,5],[7,56,5,3],[1,2]] on veut que la fonction retourne la liste
[[1,2],[3,5],[5,6,4],[7,56,5,3]]
3