


Die zehn wichtigsten Sortieralgorithmen, die Programmierer beherrschen müssen (Teil 1)
Sortieralgorithmus Man kann sagen, dass jeder Programmierer es beherrschen muss Es ist notwendig, deren Prinzipien und Implementierung zu verstehen Das Folgende ist eine Einführung in die Python-Implementierung der zehn am häufigsten verwendeten Sortieralgorithmen, um Ihnen das Lernen zu erleichtern.
01 Blasensortierung – Austauschsortierung 02 Schnellsortierung – Austauschsortierung
03 Auswahlsortierung – Auswahlsortierung 0 4 Heap-Sortierung – Auswahlsortierung
05 Einfügungssortierung - Einfügungssortierung
06 Hügelsortierung - Einfügungssortierung
07 Zusammenführungssortierung - Zusammenführungssortierung.
0 8 Zählsortierung – Verteilungssortierung
09 Radix-Sortierung – Verteilungssortierung
10 Eimersortierung – Verteilungssortierung
Benachbarte Elemente vergleichen. Wenn das erste größer als das zweite ist, tauschen Sie beide aus.
Machen Sie dasselbe für jedes Paar benachbarter Elemente, beginnend mit dem ersten Paar am Anfang und endend mit dem letzten Paar am Ende. Zu diesem Zeitpunkt sollte das letzte Element die größte Zahl sein.
Wiederholen Sie die obigen Schritte für alle Elemente außer dem letzten.
Wiederholen Sie die obigen Schritte jedes Mal für immer weniger Elemente, bis keine Zahlenpaare mehr zum Vergleichen vorhanden sind.
'''冒泡排序''' def Bubble_Sort(arr): for i in range(1, len(arr)): for j in range(0, len(arr)-i): if arr[j] > arr[j+1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr arr = [29, 63, 41, 5, 62, 66, 57, 34, 94, 22] result = Bubble_Sort(arr) print('result list: ', result) # result list: [5, 22, 29, 34, 41, 57, 62, 63, 66, 94]
Legen Sie zunächst einen Teilwert fest und teilen Sie das Array durch diese Teilung in einen linken und einen rechten Teil Wert.
Konzentrieren Sie die Daten, die größer oder gleich dem Grenzwert sind, auf der rechten Seite des Arrays und die Daten, die kleiner als der Grenzwert sind, auf der linken Seite des Arrays. Zu diesem Zeitpunkt ist jedes Element im linken Teil kleiner oder gleich dem Teilwert und jedes Element im rechten Teil ist größer oder gleich dem Teilwert.
Dann können die Daten links und rechts unabhängig voneinander sortiert werden. Für die Array-Daten auf der linken Seite können Sie einen Teilerwert nehmen und diesen Teil der Daten in einen linken und einen rechten Teil aufteilen. Platzieren Sie auf ähnliche Weise den kleineren Wert auf der linken Seite und den größeren Wert auf der rechten Seite. Auch die Array-Daten rechts können auf ähnliche Weise verarbeitet werden.
Wiederholen Sie den obigen Vorgang, bis die Datensortierung der linken und rechten Teile abgeschlossen ist.
'''快速排序''' def Quick_Sort(arr): # 递归入口及出口 if len(arr) >= 2: # 选取基准值,也可以选取第一个或最后一个元素 mid = arr[len(arr) // 2] # 定义基准值左右两侧的列表 left, right = [], [] # 从原始数组中移除基准值 arr.remove(mid) for num in arr: if num >= mid: right.append(num) else: left.append(num) return Quick_Sort(left) + [mid] + Quick_Sort(right) else: return arr arr = [27, 70, 34, 65, 9, 22, 47, 68, 21, 18] result = Quick_Sort(arr) print('result list: ', result) # result list: [9, 18, 21, 22, 27, 34, 47, 65, 68, 70]
Finden Sie das kleinste (große) Element in der unsortierten Reihenfolge und speichern Sie es unter die Startposition der sortierten Sequenz.
Suchen Sie weiterhin das kleinste (große) Element aus den verbleibenden unsortierten Elementen und fügen Sie es dann am Ende der sortierten Sequenz ein.
und so weiter, bis alle Elemente sortiert sind.
'''选择排序''' def Selection_Sort(arr): for i in range(len(arr) - 1): # 记录最小数的索引 minIndex = i for j in range(i + 1, len(arr)): if arr[j] < arr[minIndex]: minIndex = j # i 不是最小数时,将 i 和最小数进行交换 if i != minIndex: arr[i], arr[minIndex] = arr[minIndex], arr[i] return arr arr = [5, 10, 76, 55, 13, 79, 49, 51, 65, 30] result = Quick_Sort(arr) print('result list: ', result) # result list: [5, 10, 13, 30, 49, 51, 55, 65, 76, 79]
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。
'''插入排序''' def Insertion_Sort(arr): for i in range(1, len(arr)): key = arr[i] j = i - 1 while j >= 0 and key < arr[j]: arr[j + 1] = arr[j] j -= 1 arr[j + 1] = key return arr arr = [31, 80, 42, 47, 35, 26, 10, 5, 51, 53] result = Insertion_Sort(arr) print('result list: ', result) # result list: [5, 10, 26, 31, 35, 42, 47, 51, 53, 80]
创建一个堆 H[0……n-1];
把堆首(最大值)和堆尾互换;
把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
重复步骤 2,直到堆的尺寸为 1。
'''堆排序''' def Heapify(arr, n, i): largest = i # 左右节点分块 left = 2 * i + 1 right = 2 * i + 2 if left < n and arr[i] < arr[left]: largest = left if right < n and arr[largest] < arr[right]: largest = right if largest != i: # 大小值交换 arr[i], arr[largest] = arr[largest], arr[i] # 递归 Heapify(arr, n, largest) def Heap_Sort(arr): nlen = len(arr) for i in range(nlen, -1, -1): # 调整节点 Heapify(arr, nlen, i) for i in range(nlen - 1, 0, -1): arr[i], arr[0] = arr[0], arr[i] # 调整节点 Heapify(arr, i, 0) return arr arr = [26, 53, 83, 86, 5, 46, 72, 21, 4, 75] result = Heap_Sort(arr) print('result list: ', result) # result list: [4, 5, 21, 26, 46, 53, 72, 75, 83, 86]
Das obige ist der detaillierte Inhalt vonDie zehn wichtigsten Sortieralgorithmen, die Programmierer beherrschen müssen (Teil 1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



1. Hintergrund des Problems 1. Einführung in das zweiseitige Marktexperiment Der zweiseitige Markt, also eine Plattform, umfasst zwei Teilnehmer, Produzenten und Verbraucher, und beide Parteien fördern sich gegenseitig. Kuaishou hat beispielsweise einen Videoproduzenten und einen Videokonsumenten, und die beiden Identitäten können sich bis zu einem gewissen Grad überschneiden. Bilaterales Experiment ist eine experimentelle Methode, die Gruppen auf Produzenten- und Verbraucherseite vereint. Bilaterale Experimente haben folgende Vorteile: (1) Die Auswirkungen der neuen Strategie auf zwei Aspekte können gleichzeitig erfasst werden, beispielsweise Änderungen im Produkt-DAU und die Anzahl der Personen, die Werke hochladen. Bilaterale Plattformen haben oft netzwerkübergreifende Effekte, je mehr Leser es gibt, desto aktiver werden die Autoren sein, und je aktiver die Autoren sind, desto mehr Leser werden ihnen folgen. (2) Effektüberlauf und -übertragung können erkannt werden. (3) Helfen Sie uns, den Wirkungsmechanismus besser zu verstehen. Das AB-Experiment selbst kann uns nicht nur den Zusammenhang zwischen Ursache und Wirkung aufzeigen

So filtern und sortieren Sie Daten in der Vue-Technologieentwicklung. In der Vue-Technologieentwicklung sind das Filtern und Sortieren von Daten sehr häufige und wichtige Funktionen. Durch Datenfilterung und -sortierung können wir die benötigten Informationen schnell abfragen und anzeigen und so die Benutzererfahrung verbessern. In diesem Artikel wird das Filtern und Sortieren von Daten in Vue vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, diese Funktionen besser zu verstehen und zu verwenden. 1. Datenfilterung Datenfilterung bezieht sich auf das Herausfiltern von Daten, die den Anforderungen basierend auf bestimmten Bedingungen entsprechen. In Vue können wir comp bestehen

Organisieren |. Nuka-Cola, Chu Es ist eine interessante Herausforderung und es gibt viele Möglichkeiten, sie zu meistern. Es wurde viel Zeit investiert, um herauszufinden, wie Sortieraufgaben effizienter erledigt werden können. Als Grundoperation sind Sortieralgorithmen in die Standardbibliotheken der meisten Programmiersprachen integriert. Es gibt viele verschiedene Sortiertechniken und Algorithmen, die in Codebasen auf der ganzen Welt verwendet werden, um große Datenmengen online zu organisieren, aber zumindest was die mit dem LLVM-Compiler verwendeten C++-Bibliotheken betrifft, hat sich der Sortiercode seit mehr als einem Jahr nicht geändert Jahrzehnt. Kürzlich hat das Google DeepMindAI-Team nun eine entwickelt

Swoole ist ein leistungsstarkes Netzwerkkommunikations-Framework, das auf der PHP-Sprache basiert. Es unterstützt die Implementierung mehrerer asynchroner E/A-Modi und mehrerer erweiterter Netzwerkprotokolle. Basierend auf Swoole können wir seine Multithreading-Funktion nutzen, um effiziente Algorithmusoperationen zu implementieren, beispielsweise Hochgeschwindigkeits-Sortieralgorithmen. Der Hochgeschwindigkeits-Sortieralgorithmus (QuickSort) ist ein gängiger Sortieralgorithmus. Durch die Lokalisierung eines Benchmark-Elements werden die Elemente, die kleiner als das Benchmark-Element sind, auf der linken Seite platziert, und diejenigen, die größer oder gleich dem Benchmark sind Element werden auf der rechten Seite platziert. Dann werden die linke und die rechte Teilsequenzrekursion platziert

So implementieren Sie den Auswahlsortierungsalgorithmus in C#. Die Auswahlsortierung (SelectionSort) ist ein einfacher und intuitiver Sortieralgorithmus. Seine Grundidee besteht darin, jedes Mal das kleinste (oder größte) Element aus den zu sortierenden Elementen auszuwählen und am Ende einzufügen die sortierte Reihenfolge. Wiederholen Sie diesen Vorgang, bis alle Elemente sortiert sind. Erfahren Sie mehr darüber, wie Sie den Auswahlsortierungsalgorithmus in C# implementieren, zusammen mit spezifischen Codebeispielen. Erstellen einer Auswahlsortierungsmethode Zuerst müssen wir eine Methode zur Implementierung der Auswahlsortierung erstellen. Diese Methode akzeptiert a

So verwenden Sie den Basissortieralgorithmus in C++. Der Basissortierungsalgorithmus ist ein nicht vergleichender Sortieralgorithmus, der die Sortierung durch Aufteilen der zu sortierenden Elemente in einen begrenzten Satz von Ziffern abschließt. In C++ können wir den Radix-Sortieralgorithmus verwenden, um eine Menge von Ganzzahlen zu sortieren. Im Folgenden besprechen wir anhand konkreter Codebeispiele ausführlich, wie der Basissortieralgorithmus implementiert wird. Algorithmusidee Die Idee des Radix-Sortieralgorithmus besteht darin, die zu sortierenden Elemente in einen begrenzten Satz digitaler Bits zu unterteilen und die Elemente dann nacheinander nach jedem Bit zu sortieren. Die Sortierung nach jedem Bit ist abgeschlossen

Array-Sortieralgorithmen werden verwendet, um Elemente in einer bestimmten Reihenfolge anzuordnen. Zu den gängigen Arten von Algorithmen gehören: Blasensortierung: Vertauschen Sie Positionen durch Vergleichen benachbarter Elemente. Auswahlsortierung: Finden Sie das kleinste Element und tauschen Sie es an die aktuelle Position aus. Einfügungssortierung: Elemente einzeln an der richtigen Position einfügen. Schnelle Sortierung: Divide-and-Conquer-Methode, wählen Sie das Pivot-Element aus, um das Array zu teilen. Zusammenführungssortierung: Teilen und Erobern, rekursives Sortieren und Zusammenführen von Unterarrays.

Für verschiedene Szenarien ist es entscheidend, den geeigneten PHP-Array-Sortieralgorithmus auszuwählen. Die Blasensortierung eignet sich für kleine Arrays ohne Stabilitätsanforderungen. Die schnelle Sortierung weist in den meisten Fällen eine hohe Stabilität auf und eignet sich für Situationen, in denen stabile Ergebnisse erforderlich sind ; Heap-Sortierung findet effizient den Maximal- oder Minimalwert. Durch den Vergleich tatsächlicher Fälle ist die schnelle Sortierung anderen Algorithmen hinsichtlich der Zeiteffizienz überlegen. Wenn jedoch Stabilität berücksichtigt werden muss, sollte die Zusammenführungssortierung gewählt werden.
