Tri à bulles en python 3.0 à partir d'un algorithme

Résolu/Fermé
youterk
Messages postés
191
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2015
- 31 oct. 2012 à 17:04
 geekette89 - 8 nov. 2012 à 16:09
Bonjour,
voilà l'algorithme que j'ai à mettre en python :

Données : Une liste à trier notée L
Résultat : une liste L triée

Variables : k, temp : entier

début bloc principal
k <- -1 ;
tant que k < taille(L) faire
k <- k+1;
si L[k]>L[k+1] alors
temp <- L[k];
L[k] <- L[k+1];
L[k+1] <- temp;
k <- -1;


moi j'ai fait :
k=-1
while k < len(L):
k=(k+1)
if L[k] > L[k+1]:
temp=L[k]
L[k]=L[k+1]
L[k+1]=temp
k=-1

On doit juste présenter ça sous forme d'une fonction, mais ça me mets avec aptana qu'il y a un problème à " if L[k] > L[k+1]"

aidez-moi s'il vous plaît

2 réponses

Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
1 nov. 2012 à 08:08
Bonjour youterk,
Je pense,
....
tant que k < taille(L) faire 
est mauvais
....
tant que k < taille(L-1) faire 
est correct si le premier élément du tableau est 1
....
tant que k < taille(L-2) faire 
est correct si le premier élément du tableau est 0
0
youterk
Messages postés
191
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2015
115
1 nov. 2012 à 13:49
non l'algo est donné
0
youterk
Messages postés
191
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2015
115
1 nov. 2012 à 13:52
je ne peux donc pas le modifier :/
0
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
Modifié par Heliotte le 1/11/2012 à 15:59
On doit juste présenter ça sous forme d'une fonction, mais ça me mets avec aptana qu'il y a un problème à " if L[k] > L[k+1]"
Admettons ce tablo de 6 éléments : t(0) = 2, t(1) = 1, t(2) = 3, t(3) = 4, t(4) = 5, t(5) = 6.
k=0: t(0)>t(1) = VRAI, donc on permute.
On recommence, puisque k=-1
t(0) = 1, t(1) = 2, t(2) = 3, t(3) = 4, t(4) = 5, t(5) = 6. (tout est maintenant dans l'ordre pour aller vite )
k=0: t(0)>t(1) = FAUX, on continue ...
k=1: t(1)>t(2) = FAUX, on continue ...
k=2: t(2)>t(3) = FAUX, on continue ...
k=3: t(3)>t(4) = FAUX, on continue ...
k=4: t(4)>t(5) = FAUX, on continue ...
k=5: t(5)>t(6) = FAUX, on continue ... >>> t(6) n'existe pas !
et k=5 est correct puisque plus petit que Len(tablo)
As-tu compris je ce que je voulais dire ?
0
youterk
Messages postés
191
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2015
115
1 nov. 2012 à 19:46
oui en partie, merci de l'aide :)
0
pourquoi doit-on mettre la variable k à -1 à la fin ? je ne comprend pas >_< k est bien le rang d'un nombre dans le tableau ? dans ton exemple Heliotte, k(o)=t(o)= 2 non ?
0