4 - Algorithme sur les listes 1. Sommes des éléments d`une liste

Info-PCSI2
N. Véron-LMB-14-15
4 - Algorithme sur les listes
1. Sommes des éléments d’une liste : 
Entrée : une liste L
N
longueur de la liste
Somme
0
Pour k allant de 0 à N - 1 faire
Somme
Somme + L(k)
FindePour
Afficher Somme
Ce qui donne en Python
N = len(L)
Somme = 0
for k in range(N):
Somme = Somme+L[k]
Print(Somme)
Ou bien, puisque les listes sont des
itérateurs
Somme = 0
for x in L:
Somme = Somme + x
Print(Somme)
On peut aussi écrire une fonction :
def somme(L):
s = 0
for x in L:
s = s + x
return s
2 Recherche du maximum dans une liste :
Entrée : une liste L
N
longueur de la liste
Maximum
L(0)
Pour k allant de 1 à N-1 faire
Si L(k) > maximum alors
Maximum
L(k)
FindeSi
FindePour
Afficher Maximum
Ce qui donne en Python
N = len(L)
Maximum = L[0]
for k in range(1,N):
if L[k] > Maximum:
Maximum = L[k]
Print(Maximum)
Ou bien, puisque les listes sont des
itérateurs
Maximum = L[0]
for x in L:
if x > Maximum:
Maximum = x
Print(Maximum)
On peut aussi écrire une fonction :
def maximum(L) :
m=L[0]
for x in L:
if x > m:
m=x
return m
Info-PCSI2
N. Véron-LMB-14-15
3 Recherche d’un élément dans une liste
Entrée : Une liste L, une valeur x
N
longueur de la liste
Réponse
Faux
k
0
Tant que k < N et L(k) x
k
k+1
FindeTantque
Si k ≤ N alors
Réponse
Vrai
FindeSi
Afficher réponse
Ce qui donne en Python
N = len(L)
Rep = False
k = 0
while k < N and x != L[k]:
#très important le and est paresseux aussi le deuxième test n’est pas
effectué si le premier est faux ce qui évite d’être en dehors des bornes de
la liste
k = k+1
if k < N
Rep = True
print(Rep)
On peut aussi écrire une fonction et utiliser le fait que la commande return met fin à l’exécution
du script.
def recherche(L,x) :
k=0
while k<len(L) :
if L[k]==x:
return true
k=k+1
return false
On peut aussi utiliser une boucle for puisque la commande return a l’effet d’un break
def recherche(L,x) :
for element in L:
if L[k]==x:
return true
return false
Au pire des cas, c’est à dire lorsque x n’est pas dans la liste, ce programme effectue N
itérations. Pour faire mieux on propose de partir d’un tableau trié et de faire une recherche
dichotomique.
Entrée : L une liste triée, x une valeur
Réponse
Faux
g
0
d
longueur de la liste - 1
m
le quotient de (a + b) par 2
Tant que g d et L[m] x faire
Si x > L[m]
g
m+1
Sinon
d
m-1
FindeSi
Info-PCSI2
N. Véron-LMB-14-15
m
le quotient de (a+b) par 2
FindeTantque
Si g d
Réponse
Vrai
FindeSi
Afficher Réponse
On écrit une fonction Python en tenant compte des cas précédents:
def recherche_dicho(x,L)
g,d = 0, len(L)-1
while g ≤ d
m = (g+d)//2
if L[c]==x:
return true
elif L[c] < x:
g = c+1
else:
d = c-1
c=(a+b)//2
return false
4 Recherche d’un mot dans un texte
Cela revient à rechercher une sous-liste dans une liste
Entrée : Une liste L, un mot m
N
longueur de L
M
longueur de m
i
0
Rep
Faux
Tant que i ≤ N M faire
j
0
Tant que j < M et L(i+j) = m(j)
j
j+1
FindeTantque
Si j = M alors
Rep
Vraie
i
N M + 1
FindeSi
i
i+1
FindeTantque
Afficher Rep
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !