[GO] Python-Anfänger organisieren Blasensorten

Dies ist ein Memorandum

~~ Ich glaube nicht, dass ich ~~ vergessen werde

(Ergänzung: 2020/06 11:13: 00) Ich habe Ratschläge von @shiracamus erhalten, daher werde ich sie korrigieren.

Was ist Blasensorte?

Die Blasensortierung ist ein Sortieralgorithmus, der auch als grundlegende Austauschmethode bezeichnet wird. ** Dies ist der Fall, wenn Sie versuchen, ihn ordnungsgemäß zu erstellen **

bable.png

Erläuterung des Inhalts

bubble.py


'''1'''def bubble(T):
'''2'''    i = len(T)-1
'''3'''    while i:
'''4'''        for j in range(i-1):
'''5'''            if T[j] > T[i]:
'''6'''                T[j],T[i] = T[i],T[j]
'''7'''        i -= 1
'''8'''    return T

Wow, es ist ein sehr kurzer Algorithmus

Die Seite, die es geschrieben hat, war ein wenig überrascht. Da es so kurz ist, werde ich es mit der Zeilennummer erklären.

  1. Funktionsdeklaration, Argument ist T erstellt mit numerischem Array-Typ.
  2. ** Achtung ** Die von len (T) zurückgegebene Nummer ist "Länge". Wenn Sie sie also so einfügen, wie sie in der Array-Nummer enthalten ist, tritt ein Fehler auf, der sich auf die Außenseite des Arrays bezieht.
  3. Die "while" -Anweisung muss nur Zeichen enthalten, die "true" sind, genau wie "if". Deshalb habe ich ein einzelnes "i" eingegeben, das die gleiche Bedeutung wie "i! = 0" hat.
  1. Hier ist "für". range (i) ist in Ordnung, aber die Schleife wird einmal verschwendet. --T [i]> T [i] Vergleichen Sie dasselbe mit "false"
  2. Ich möchte, dass die rechte Seite des Arrays groß ist. Wenn die linke Seite groß ist, tauschen Sie sie aus.
  3. Tauschen. ~~ Eine Zeile reicht für Sabori Demon ~~ Es ist wunderschön, weil es in einer Zeile zusammengefasst ist.
  4. Bei der Blasensortierung wird das Ergebnis von hinten festgelegt, also -1. Was ich an Python am meisten nicht mag, ist, dass ich es nicht kann.
  5. Gibt T. zurück. Wenn sich darin eine Schleife befindet und ein Formular zurückgegeben werden muss, ist es eine seltsame Person, die es zu einer Wiederholungsfunktion machen möchte, damit Sie später damit spielen können.

Blasensorte ist eigentlich schwer

[Wiki](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83 Wie Sie unter Bezugnahme auf% 88) sehen können, ist es dadurch gekennzeichnet, dass es schwer ist, da es sich um einen Algorithmus handelt, der beim Sortieren eine doppelte Schleife aufweist. Wenn Sie alles einzeln austauschen, ist dies auch eine Ursache für das hohe Gewicht, sodass der Verbesserungsalgorithmus die Daten speichert.

bubble2.py


def bubble2(T):
    for i in range(len(T)-1,0,-1):
        tmp = T[0]
        for j in range(1,i+1):
            if tmp < T[j]:
                tmp , T[j] = T[j], tmp
            T[j-1]=T[j]
        T[i] = tmp
        print(T)
    return T

Ich habe versucht, es sofort zu schaffen, aber gibt es eine Verbesserung? Es sollte sein.

Beiseite

Ich habe ein Programm erstellt, das ein zufälliges Array ohne doppelte Zahlen erstellt, daher werde ich ein Beispiel geben.

(Korrigierter Teil)

Vermeiden Sie die Verwendung von Listen als Standardargumente. Referenz: https://docs.python.org/ja/3/faq/programming.html#why-are-default-values-shared-between-objects

Ich habe den Teil xMake (i, T = [-1]) und den Text des Programms korrigiert.

makeLis.py


import random as r
def xMake(i,T = None ):

    if T is None:
        T = [r.randint(1,i)]*i
        return xMake( 1 , T )
    if i == len(T):
        return T

    T[i] = r.randint(1,len(T))
    for j in range(i):
        if T[i] == T[j]:
            return xMake( i , T )
    return xMake( i+1 , T )


print(xMake(10))
>>[2, 1, 3, 6, 4, 10, 9, 5, 7, 8]
print(xMake(20))
>>[13, 20, 1, 12, 7, 8, 6, 4, 17, 11, 14, 9, 18, 3, 5, 10, 15, 2, 19, 16]

~~ Personen, die die Wiederholungsfunktion verwenden, auch wenn sie dazu bereit sind ~~ Bitte sagen Sie mir, ob es eine bessere oder sauberere Schreibweise gibt.

Ich habe von @shiracamus gelernt. Sie können klar schreiben, indem Sie> range und sample verwenden.

By_shiracamus.py


import random as r

def xMake(i):
    return r.sample(range(1, i + 1), k=i)

print(xMake(10))
print(xMake(20))

Die Verwendung von random.sample macht es so viel einfacher ...! Vielen Dank! Ich werde es als Beispiel verwenden!

Wenn ich eine Funktion deklariere, nenne ich sie oft "x〇〇 ()" (normalerweise eine Zahl). Wenn Sie ein Programm ohne Zweck schreiben oder kopieren und den Schreibstil ändern, machen Sie beim Programmieren einen Fehler, wenn der Funktionsname keine Regel enthält. Wenn Sie es dann tatsächlich verwenden, schreiben Sie es mit der Ersetzungsfunktion des Texteditors neu, um daraus einen Namen zu machen, den Sie verstehen können. Ich weiß nicht, ob das eine gute Sache ist, aber da ich nicht gut Englisch kann, mache ich manchmal peinliche Dinge wie Rechtschreibfehler.

Recommended Posts

Python-Anfänger organisieren Blasensorten
Python-Anfänger organisieren Heap-Sortierungen
Python-Anfänger organisieren schnelle Sortierungen
Python-Anfänger fordern Cpaw CTF Q14 mit Blasensortierung heraus
[Python] Sortieren
Python #sort
Blasensorte
Blasensorte
Stuge Sort in Python 3 implementiert (Bubble Sort & Quick Sort)
Anfänger üben Python
Python-Anfängernotiz
Python-Anfängerhandbuch (Funktionen)
Python selbst erstellte Klassensortierung
Python-Anfänger berührt Pytorch (3)
Blasensortierung ohne Sortierung
[Memo] Python 3-Listensortierung
Python Dictionary Anfängerhandbuch
Python-Spickzettel
Benutzerdefinierte Sortierung in Python3
[Python] Sammlungstypen sortieren
Python-Anfänger berührt Pytorch (1)
Python-Anfänger berührt Pytorch (2)
Python-Anfängerhandbuch (Einführung)
OpenCV für Python-Anfänger
Organisieren Sie Typen in Python
Blasensortierung, Sortierung auswählen, Sortierung einfügen, Shell sortieren, Sortierung zusammenführen, schnelle Sortierung, Sortierung zählen (Python)
Programmieranfänger verglichen Sortierzeiten
Python-Modul-Importe alphabetisch sortieren
Lernablauf für Python-Anfänger
Python Basic Dikt Sortierreihenfolge
Python-Anfänger-Memorandum-Funktion
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Absteigende Sorte mit Mongodb in Python
Python3-Umgebungskonstruktion (für Anfänger)
Organisieren Sie die Python-Entwicklungsumgebung
3 Gründe für die Programmierung Anfänger sollten mit Python beginnen
Python #Funktion 2 für Super-Anfänger
Python-Anfängerhandbuch (Variationen / Arrays)
Grundlegende Python-Grammatik für Anfänger
100 Pandas klopfen für Python-Anfänger
Python #Funktion 1 für Super-Anfänger
Python #Liste für Super-Anfänger
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Blasensortierung mit flauschiger Animation
Sortieren nach Datum in Python
Über Python sort () und reverse ()
[Python] Zufällige Verarbeitung (erstellen, auswählen, sortieren)
[Python] Sortierbar nach mehreren Bedingungen sortieren
Python-Übungen für Anfänger # 2 [für Anweisung / while-Anweisung]
Python für Super-Anfänger Super-Anfänger Python # Wörterbuch Typ 1
Zusammenfassung des maschinellen Lernens von Python-Anfängern
Python #index für Super-Anfänger, Slices
Typisierungsautomatisierungsnotiz von Python-Anfängern
Sortieren Sie große Textdateien in Python
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Python #len Funktion für Super-Anfänger
Implementierte Blasensortierung in Java (BubbleSort)
[Python] Einzeilige Starlin-Sortierung mit 50 Zeichen
Web Scraping für Anfänger in Python (1)
# 2 Python-Anfänger fordern AtCoder heraus! ABC085C --Otoshidama
Führen Sie unittest in Python aus (für Anfänger)