[PYTHON] Blasensortierung ohne Sortierung

Guten Abend. Wenn Sie ein Python-Benutzer sind, können Sie sort verwenden, Ich wollte die Denkweise probieren Ich habe versucht, ٩ (ˊᗜˋ *) و zusammenzufassen

Ordnen wir vorerst die folgenden Sequenzen in aufsteigender Reihenfolge an.

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

Selbst wenn Sie es plötzlich sagen, ist die Hürde hoch Bewegen wir zunächst die kleinste 1 ganz nach links. Zum Beispiel eine Aktion, die zwei Werte vergleicht und den kleineren nach links verschiebt. Wie wäre es mit einem Start am richtigen Ende? Betrachten Sie x [5], x [6] als Beispiel.

test.py


        # x[5]Ist x[6]Wenn es größer ist,
        if x[6] < x[5]:
        # x[5] , x[6]Tauschen Sie die Werte von
            x[6],x[5] = x[5],x[6] 

Das Bild sieht so aus. x [5], x [6] sind blau hervorgehoben. 図1.PNG Als nächstes vergleichen wir mit x [4] VS x [5]. 図2.PNG x [4] <x [5] gilt. Es besteht also keine Notwendigkeit, dies zu ändern.

Wenn Sie sie in dieser Reihenfolge vergleichen, Das ganze Bild ist wie folgt. 図3.PNG Gut, ich konnte 1 nach links verschieben! (^^)! Das endgültige Ziel besteht darin, in aufsteigender Reihenfolge zu sortieren, sodass andere Sortierungen erforderlich sind.

Wie auch immer, 1 wird zum linken Ende verschoben, also ist 1 fest! Egal wer was sagt, es ändert sich nicht (lacht)! Vorerst habe ich die feste 1 in grün geändert. 図4.PNG Schreiben wir den Ablauf bis zu diesem Punkt mit der for-Anweisung.

test.py


#1.Start ist x[6],Das heißt, n-Es ist 1.
#2.Ende ist x[1] vs x[0]Also hier, wenn Sie 0 setzen
#Da der Stoff eine Zuordnung bis 1 ist, x[1] vs x[0]Wird realisiert.
#3.Die Zahlen sind-Es wird um 1 verringert
#Wenn Sie die oben genannten arrangieren, reichen Sie(len(x)-1,0,-1)Wird sein!
    for j in range(len(x)-1,0,-1):
        #Beispiel) x[6] < x[5]Wenn ja, ersetzen Sie es! 
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

Ich denke nicht, dass es ein Problem ist. Bitte sagen Sie mir, wenn etwas schwer zu verstehen ist. m (_ _) m Dann als nächstes. Wenn Sie feststellen, dass 1 die kleinste ist, wie in der folgenden Abbildung gezeigt, Setzen wir den nächstkleineren Wert neben 1. 図4.PNG Sie müssen die Daten nicht mehr nach x [0] verschieben. Sie kann von x [6] bis x [1] reichen. Lassen Sie uns einen kleinen Code machen.

test.py


#↓ Ich habe dies von 0 auf 1 geändert.
    for j in range(len(x)-1,1,-1):
        #Beispiel) x[6] < x[5]Wenn ja, ersetzen Sie es! 
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

Von x [6] bis x [1] wie oben Wir werden die Vergleichsarbeit wiederholen. Das Ergebnis ist wie folgt. 図5.PNG Als nächstes kommt x [6] bis x [2].

test.py


#↓ Ich habe dies von 1 auf 2 geändert.
    for j in range(len(x)-1,2,-1):
        #Beispiel) x[6] < x[5]Wenn ja, ersetzen Sie es! 
        if x[j] < x[j-1]:
            x[j],x[j-1] = x[j-1],x[j] 

Es ist gut, oder? (Lol) Das ist richtig, wenn Sie für Anweisungen verschachteln Sie können ausdrücken, was Sie tun möchten.

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] 

Das ganze Bild ist wie folgt.

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)

Ausführungsergebnis.py


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

Sortieren macht Spaß zu verstehen, Die Erklärung enthält viele Zahlen, daher bin ich es leid, Artikel zu schreiben (lacht). In der Tat, wenn die Reihenfolge nicht mehr geändert werden muss, Es mag eine Möglichkeit geben, die Sorte aufzurunden, aber ... Als nächstes folgt die schnelle Sortierung. ..

Recommended Posts

Blasensortierung ohne Sortierung
Schnelle Sortierung ohne Sortierung
Blasensorte
Blasensorte
Überschussberechnung ohne Verwendung von%
Blasensortierung in Python
Sortierung mit rekursiv zusammenführen
Schreiben Sie FizzBuzz ohne "="
Python-Anfänger organisieren Blasensorten
Gammakorrektur ohne OpenCV
Blasensortierung mit flauschiger Animation
[Python3] Google übersetzt Google Übersetzung ohne Verwendung von API
Python, Slice ohne Doppelpunkt (:). a .__ getitem__ (Slice (3,5)).
Implementierte Blasensortierung in Java (BubbleSort)
Sortieren
Speichern Sie Dateien mit EC2-Speicher ohne S3
Implementieren Sie OAuth ohne Client-Bibliothek (Java)
Tauschen Sie 1 und 2 aus, ohne die if-Anweisung zu verwenden
Verwenden Sie die Webkamera ohne Bildschirmanzeige mit Python-Zbar
Stuge Sort in Python 3 implementiert (Bubble Sort & Quick Sort)