[PYTHON] Tri à bulles sans utiliser le tri

Bonsoir. Si vous êtes un utilisateur Python, vous pouvez utiliser le tri, Je voulais goûter à la façon de penser J'ai essayé de résumer ٩ (ˊᗜˋ *) و

Pour le moment, organisons les séquences suivantes par ordre croissant.

x = [6,4,3,7,1,9,8]

Même si tu le dis soudainement, l'obstacle est élevé Commençons par déplacer le plus petit 1 à l'extrême gauche. Par exemple, une action qui compare deux valeurs et déplace la plus petite vers la gauche. Que diriez-vous de partir du bon bout? Prenons x [5], x [6] comme exemple.

test.py


        # x[5]Est x[6]S'il est plus grand,
        if x[6] < x[5]:
        # x[5] , x[6]Échangez les valeurs de
            x[6],x[5] = x[5],x[6] 

L'image ressemble à ceci. x [5], x [6] sont surlignés en bleu. 図1.PNG Ensuite, comparons avec x [4] VS x [5]. 図2.PNG x [4] <x [5] tient. Il n'est donc pas nécessaire de le changer.

Si vous les comparez dans l'ordre comme celui-ci, L'image entière est la suivante. 図3.PNG Bon, j'ai pu déplacer 1 à l'extrémité gauche! (^^)! Le but final est de trier par ordre croissant, donc d'autres types sont nécessaires.

Quoi qu'il en soit, 1 est déplacé vers l'extrémité gauche, donc 1 est fixe! Peu importe qui dit quoi, ça ne change pas (rires)! Pour le moment, j'ai changé le 1 fixe en vert. 図4.PNG Écrivons le flux jusqu'à ce point avec l'instruction for.

test.py


#1.le début est x[6],Autrement dit, n-C'est 1.
#2.la fin est x[1] vs x[0]Alors ici, si vous mettez 0
#Puisque la substance est une affectation jusqu'à 1, x[1] vs x[0]Sera réalisé.
#3.Les chiffres sont-Il diminuera de 1
#Si vous organisez ce qui précède, rangez(len(x)-1,0,-1)Sera!
    for j in range(len(x)-1,0,-1):
        #Exemple) x[6] < x[5]Si oui, remplacez-le! 
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

Je ne pense pas que ce soit un problème. Veuillez me dire si quelque chose est difficile à comprendre. m (_ _) m Ensuite. Si vous trouvez que 1 est le plus petit, comme le montre la figure ci-dessous, Mettons la valeur la plus petite suivante à côté de 1. 図4.PNG Vous n'avez plus besoin de déplacer les données vers x [0]. Cela peut être de x [6] à x [1]. Faisons un petit code.

test.py


#↓ J'ai changé cela de 0 à 1.
    for j in range(len(x)-1,1,-1):
        #Exemple) x[6] < x[5]Si oui, remplacez-le! 
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

De x [6] à x [1] comme ci-dessus Nous répéterons le travail de comparaison. Le résultat est le suivant. 図5.PNG Vient ensuite x [6] à x [2].

test.py


#↓ J'ai changé cela de 1 à 2.
    for j in range(len(x)-1,2,-1):
        #Exemple) x[6] < x[5]Si oui, remplacez-le! 
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

C'est bon, non? (Lol) C'est vrai, lors de l'imbrication des déclarations Vous pouvez exprimer ce que vous voulez faire.

test.py


for i in range (len(x)-1):
    for j in range(len(x)-1,i,-1):
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

L'image entière est la suivante.

bubble_test.py


x = [6,4,3,7,1,9,8]

for i in range (len(x)-1):
    for j in range(len(x)-1,i,-1):
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

print(x)

Résultat d'exécution.py


[1, 3, 4, 6, 7, 8, 9]

Le tri est amusant à comprendre, Il y a beaucoup de chiffres dans l'explication, donc j'en ai marre d'écrire des articles (rires) En fait, si la séquence n'a plus besoin d'être modifiée, Il y a peut-être une façon de penser à arrondir le genre, mais ... Le prochain est le tri rapide. ..

Recommended Posts

Tri à bulles sans utiliser le tri
Tri rapide sans utiliser le tri
Tri à bulles
Tri à bulles
Calcul de l'excédent sans utiliser le%
Tri à bulles en Python
Fusionner le tri en utilisant récursif
Écrivez FizzBuzz sans utiliser "="
Les débutants en Python organisent des sortes de bulles
Correction gamma sans utiliser OpenCV
Tri à bulles avec animation moelleuse
[Python3] Google translate google translation sans utiliser l'API
Python, découpez sans utiliser deux-points (:). a .__ getitem__ (tranche (3,5)).
Mise en œuvre du tri à bulles en Java (BubbleSort)
Trier
Enregistrer des fichiers à l'aide du stockage EC2 sans utiliser S3
Implémenter OAuth sans bibliothèque client (Java)
Permutez 1 et 2 sans utiliser l'instruction if
Utilisez la webcam sans affichage d'écran en utilisant python-zbar
Mise en œuvre du tri Stuge dans Python 3 (tri à bulles et tri rapide)