In Python sortieren. Lassen Sie uns als nächstes über den Algorithmus nachdenken.

Sortieren nach Methode, eingebaute Funktion

Betrachten Sie zunächst das Sortieren der folgenden Liste.

data = [5, 3, 2, 4, 1, 6]

Es gibt zwei Arten von sort () und sorted () zum Sortieren von Listentypen in aufsteigender oder absteigender Reihenfolge in Python. --List type method sort (): Sortiert die Liste selbst

Listentyp Methode sort ()

Schreiben Sie die ursprüngliche Liste selbst neu.

data.sort()
print(data)
# [1, 2, 3, 4, 5, 6]

Die Standardeinstellung ist aufsteigende Sortierung. Setzen Sie das Argument umgekehrt auf True, um es in absteigender Reihenfolge zu sortieren.

data.sort(reverse = True)
print(data)
# [6, 5, 4, 3, 2, 1]

Beachten Sie, dass sort () None zurückgibt.

x = data.sort()
print(x)
# None

Eingebaute Funktion sortiert ()

Wenn Sie die Liste angeben, die Sie im Argument sortieren möchten, wird eine neue sortierte Liste generiert und als Rückgabewert zurückgegeben.

new_data1 = sorted(data)
print(new_data1)
# [1, 2, 3, 4, 5, 6]

Wie sort () ist sorted () standardmäßig in aufsteigender Reihenfolge. Setzen Sie das Argument umgekehrt auf True, um es in absteigender Reihenfolge zu sortieren.

new_data2 = sorted(data, reverse = True)
print(new_data2)
# [6, 5, 4, 3, 2, 1]

Sortieralgorithmus

Fassen wir die drei Sortieralgorithmen zusammen. Geschwindigkeit, Speichernutzung usw. sind mir egal, weil ich sie nur alle zusammen betrachte. Die Standardeinstellung ist aufsteigende Reihenfolge. Wenn Sie in Kommentar ändern, wird die Reihenfolge absteigend.

Denken Sortieralgorithmus

Blasensorte

Es wird wiederholt, zwei benachbarte Werte zu vergleichen und nach den Bedingungen zu sortieren.

bubble_sort


for i in range(len(data)):
    for j in range(len(data) - 1):
        if data[j] > data[j+1]: # data[j] < data[j+1]
            data[j], data[j+1] = data[j+1], data[j]
print(data)
# [1, 2, 3, 4, 5, 6]

Sortierung einfügen

Platzieren Sie das Ziel an der entsprechenden Position für die ausgerichteten Daten. Diesmal wird die 2-Minuten-Suche nicht verwendet.

insert_sort


for i in range(1, len(data)):
    j = i - 1
    target = data[i]
    while data[j] > target and j >= 0: # data[j] < target
        data[j + 1] = data[j]
        j -= 1
    data[j + 1] = target
print(data)
# [1, 2, 3, 4, 5, 6]

Zusammenführen, sortieren

Teilen Sie die Liste in kleinere Einheiten, vergleichen Sie die Anfänge der beiden Listen und kombinieren Sie sie zu einer.

merge_sort


import math

def merge(x,y):
    m = []
    i = 0
    while i < len(x):
        i += 1
        j = 1
        while j < len(x):
            if x[j-1] > x[j]: # x[j-1] < x[j]
                x[j-1] , x[j] = x[j] , x[j-1]
            j += 1
    i = 0
    while i < len(y):
        i += 1
        j = 1
        while j < len(x):
            if x[j-1] > x[j]: # x[j-1] < x[j]
                x[j-1] , x[j] = x[j] , x[j-1]
            j += 1

    while x != [] and y != []:
        if x[0] < y[0]: # x[0] > y[0]
            m.append(x.pop(0))
        else:
            m.append(y.pop(0))
    if x == []:
        m += y
    else:
        m += x
    return m

data=[7,4,2,8,1,5,3,9,6]
n = 0
i = math.log2(len(data))
while n < i+1:
    tmp = []
    k=0
    while k < len(data):
        tmp = tmp
        m=merge(data[k:k+2**n],data[k+2**n:k+2**(n+1)])
        tmp += m
        k += 2**(n+1)
    data.clear()
    data += tmp
    n += n+1

print(data)
# [1, 2, 3, 4, 5, 6]

Am Ende

Da dies Qiitas erster Beitrag ist, denke ich, dass es viele Punkte gibt, die nicht erreicht werden können. Bitte weisen Sie darauf hin. Blasensortierungen und Einfügesortierungen waren relativ schnell, aber Zusammenführungssortierungen dauerten einige Zeit.

Recommended Posts

In Python sortieren. Lassen Sie uns als nächstes über den Algorithmus nachdenken.
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Selective Sort)
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
Dynamisches Ersetzen der nächsten Methode in Python
Denken Sie an Suchvorgänge mit Tiefenpriorität und Breitenpriorität in Python
Über den Unterschied zwischen "==" und "is" in Python
Ein Memo, das ich in Python zusammengeführt habe
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
[Python] Denken Sie ernsthaft über die M-1-Gewinnmethode nach.
Blasensortierung in Python
Genetischer Algorithmus in Python
Weiter Python in C-Sprache
Algorithmus in Python (Bellman-Ford-Methode, Bellman-Ford)
Benutzerdefinierte Sortierung in Python3
Über __all__ in Python
Algorithmus in Python (Dijkstra)
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python
Denken Sie an das Rack und WSGI der nächsten Generation
Verwenden wir die offenen Daten von "Mamebus" in Python
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Mal sehen, wie def in Python verwendet wird
Finde Fehler in Python
Algorithmus in Python (Haupturteil)
Sortieren Sie den Pfad natürlich in Python
Über das Python-Modul venv
Über die Aufzählungsfunktion (Python)
Absteigende Sorte mit Mongodb in Python
Reproduzieren Sie die euklidische Methode der gegenseitigen Teilung in Python
Algorithmus in Python (Dichotomie)
Implementieren Sie den Dijkstra-Algorithmus in Python
Über die Funktionen von Python
Lassen Sie uns das Umfangsverhältnis mit Python finden
Über "für _ in range ():" von Python
Sortieren nach Datum in Python
Über Python sort () und reverse ()
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
Algorithmus in Python (Breitenprioritätssuche, bfs)
Sortierwarnung in der Funktion pd.concat
Abrufen der arXiv-API in Python
Was Anfänger über das Programmieren im Jahr 2016 denken
Denken Sie an das Problem der minimalen Änderung
Sortieralgorithmus und Implementierung in Python
Python im Browser: Brythons Empfehlung
Lassen Sie uns "Python -m Antigravitation" in Python ausführen
Speichern Sie die Binärdatei in Python
Klicken Sie in Python auf die Sesami-API
[Python] Lassen Sie uns die Anzahl der Elemente im Ergebnis bei der Operation des Sets reduzieren
Überlegen Sie, warum Kubernetes als "Linux in der Cloud-Welt" beschrieben wird.
Holen Sie sich den Desktop-Pfad in Python
[Python] Lassen Sie uns kurz über die Einschlussnotation schreiben
Über Python und Cython dtype
[Python] Was ist @? (Über Dekorateure)