Tri à bulles en python 3.0 à partir d'un algorithme [Résolu/Fermé]

Messages postés
195
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2015
- - Dernière réponse :  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

Afficher la suite 

2 réponses

Messages postés
1492
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
77
0
Merci
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
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 ?
Heliotte
Messages postés
1492
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
77 -
Bonsoir geekette89,
Si tu n'as pas compris, c'est parce que je n'ai pas écris la boucle. C'était juste un exemple de résultat (en fait, on se trouve dans la boucle, et on voit ce qui se passe à chaque tour de boucle. )
On peut faire cette boucle avec un "TANT QUE k != -1" par exemple.
D'accord je vois, mais ce que je ne comprend pas, c'est quel est l'intérêt dans l'algo de Youterk, de faire revenir k à la valeur -1 à la fin de la boucle . J'ai exactement le même algo que lui et en fait je ne le comprend pas très bien à cause de ça.
En tout cas merci de m'avoir répondu, en attendant une autre réponse aussi éclairante de ta part ;)
Heliotte
Messages postés
1492
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
77 -
Pour faire simple, on ne tient pas compte de la variable "k".
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.
EstBoleen = TRUE 
TANT QUE (EstBoleen ) FAIRE 
	EstBoleen =FALSE 
	POUR k = 0 A DERNIER_ELEMENT(t) - 1 
		SI t(k)>t(k+1) = VRAI ALORS 
			// on permute :
			VarTemp = t(k) 
			t(k)=t(k+1) 
			t(k+1)=VarTemp 
			// il faut recommencer car il y a eu permutation) 
			EstBoleen = TRUE 
		FIN SI 
	FIN POUR 
FIN TANT QUE
Ce code n'est pas optimisé, c'est juste pour démontrer que l'on doit recommencer TANT QUE il y a "permutation" au niveau des éléments du tableau, c'est tout.
Je crois avoir compris ton algo :o je posais la question pourquoi k prend la valeur -1 parce que c'est une question que j'ai dans mon dm ^^ mais je l'ai compris en fait l'algo :o
Messages postés
473
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
7 décembre 2013
37
0
Merci
Tu veux comparer quoi?? si c'est des nombres aucun soucis mais ci c'est des caractères ou des string par exemple faut chercher les fonctions de comparaison dans la classe string et puis il faut vérifier l'identation à chaque fois