Quick Sort ist einer der effizientesten Algorithmen und verwendet die Divide-and-Conquer-Technik zum Sortieren von Arrays.
So funktioniert die Schnellsortierung
Die Hauptidee von Quick Sort besteht darin, einem Element nach dem anderen dabei zu helfen, an die richtige Position in einem unsortierten Array zu gelangen. Dieses Element wird Pivot genannt.
Das Drehelement befindet sich in der richtigen Position, wenn:
- Alle Elemente links davon sind kleiner.
- Alle Elemente rechts davon sind größer.
Es spielt keine Rolle, ob die Zahlen links oder rechts schon sortiert sind. Wichtig ist, dass sich der Drehpunkt an der richtigen Position im Array befindet.
// examples of the pivot 23 positioned correctly in the array: [3, 5, 6, 12, 23, 25, 24, 30] [6, 12, 5, 3, 23, 24, 30, 25] [3, 6, 5, 12, 23, 30, 25, 24]
All dies sind gültige Ausgaben eines Arrays, bei dem der Pivot 23 ist.
Die richtige Position des Drehpunkts finden
Quick Sort hilft dem Pivot, seine richtige Position im Array zu finden. Wenn sich der Pivot beispielsweise am Anfang des Arrays befindet, aber nicht die kleinste Zahl ist, bestimmt Quick Sort, dass er sich um 5 Schritte bewegen muss, um Platz für die 5 kleineren Elemente im Array zu schaffen – vorausgesetzt, es gibt 5 solcher Elemente Zahlen.
Nehmen wir an, wir haben das Array: [10, 4, 15, 6, 23, 40, 1, 17, 7, 8] und 10 ist der Drehpunkt:
An diesem Punkt:
- Die Nummer 10 weiß nicht, ob sie sich an der richtigen Position befindet und wie viele Schritte sie zurücklegen muss, um dorthin zu gelangen. Quick Sort beginnt mit dem Vergleich von 10 mit dem Wert am nächsten Index.
- Wenn Quick Sort erkennt, dass 4 kleiner ist, zeichnet es auf, dass sich der Pivot einen Schritt nach vorne bewegen muss, damit 4 davor kommen kann.
- Also numberOfStepsToMove erhöht sich um 1.
Als nächstes beträgt der Wert bei Index 2 15, was größer als 10 ist. Da keine Anpassung erforderlich ist, Schnellsortierung behält die Schrittanzahl unverändert bei und geht zum nächsten Element im Array über.
Beim nächsten Index ist der Wert 6, was kleiner als 10 ist. Quick Sort erhöht die Schrittzahl auf 2, da der Pivot nun Platz für zwei kleinere Zahlen schaffen muss: 4 und 6 .
Jetzt muss 6 durch 15 ersetzt werden, damit die kleineren Zahlen auf der linken Seite des Arrays nebeneinander bleiben. Wir tauschen die Zahlen basierend auf den aktuellen Index- und numberOfStepsToMove-Werten aus.
Quick Sort durchläuft weiterhin das Array und erhöht die Zahl „NumberOfStepsToMove“ basierend darauf, wie viele Zahlen kleiner als der Pivot sind. Dadurch lässt sich ermitteln, wie weit sich der Drehpunkt in die richtige Position bewegen muss.
Die numberOfStepsToMove ändert sich bei 23 oder 40 nicht, da beide Werte größer als der Pivot sind und im Array nicht davor stehen sollten:
Wenn Quick Sort nun eine Schleife zum Wert 1 an Index 6 durchläuft, erhöht sich numberOfStepsToMove auf 3 und tauscht die Zahl an Index 3 aus:
Quick Sort setzt diesen Vorgang fort, bis das Ende des Arrays erreicht ist:
Da wir nun das Ende des Arrays erreicht haben, wissen wir, dass es 5 Zahlen gibt, die kleiner als 10 sind. Daher muss sich der Drehpunkt (10) 5 Schritte nach vorne zu seiner richtigen Position bewegen, wo er größer als alle ist Zahlen davor.
Mal sehen, wie das im Code aussieht:
// examples of the pivot 23 positioned correctly in the array: [3, 5, 6, 12, 23, 25, 24, 30] [6, 12, 5, 3, 23, 24, 30, 25] [3, 6, 5, 12, 23, 30, 25, 24]
Da wir nun eine Funktion haben, die uns hilft, die Position des Pivots zu finden, sehen wir uns an, wie Qucik Sort das Array in kleinere Arrays aufteilt und die Funktion getNumberOfStepsToMove verwendet, um alle Array-Elemente zu platzieren.
const getNumberOfStepsToMove = (arr, start = 0, end = arr.length - 1) => { let numberOfStepsToMove = start; // we're picking the first element in the array as the pivot const pivot = arr[start]; // start checking the next elements to the pivot for (let i = start + 1; i <p>Schnellsortierung nutzt Rekursion, um das Array effizient in kleinere Unterarrays zu unterteilen und sicherzustellen, dass Elemente sortiert werden, indem sie mit einem Pivot verglichen werden.<br> </p> <pre class="brush:php;toolbar:false">function quickSort(arr, left = 0, right = arr.length - 1) { // pivotIndex the new index of the pivot in in the array // in our array example, at the first call this will be 5, because we are checking 10 as the pivot // on the whole array let pivotIndex = getNumberOfStepsToMove(arr, left, right); }
- Der Algorithmus sortiert rekursiv das linke Subarray, das Elemente enthält, die kleiner als der Pivot sind.
- Die Rekursion stoppt, wenn das Subarray ein oder kein Element enthält, da es bereits sortiert ist.
Jetzt müssen wir den gleichen Vorgang auf der rechten Seite des Arrays durchführen:
// examples of the pivot 23 positioned correctly in the array: [3, 5, 6, 12, 23, 25, 24, 30] [6, 12, 5, 3, 23, 24, 30, 25] [3, 6, 5, 12, 23, 30, 25, 24]
In diesem Beispiel ist die rechte Seite bereits sortiert, aber der Algorithmus weiß das nicht und sie wäre sortiert worden, wenn dies nicht der Fall gewesen wäre.
Das obige ist der detaillierte Inhalt vonErlernen des Schnellsortierungsalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Python eignet sich besser für Datenwissenschaft und maschinelles Lernen, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python ist bekannt für seine prägnante Syntax- und Rich -Bibliotheks -Ökosystems und ist für die Datenanalyse und die Webentwicklung geeignet. 2. JavaScript ist der Kern der Front-End-Entwicklung. Node.js unterstützt die serverseitige Programmierung und eignet sich für die Entwicklung der Vollstapel.

JavaScript erfordert keine Installation, da es bereits in moderne Browser integriert ist. Sie benötigen nur einen Texteditor und einen Browser, um loszulegen. 1) Führen Sie sie in der Browser -Umgebung durch, indem Sie die HTML -Datei durch Tags einbetten. 2) Führen Sie die JavaScript -Datei nach dem Herunterladen und Installieren von node.js nach dem Herunterladen und Installieren der Befehlszeile aus.


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

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

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

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version