Heim Java javaLernprogramm Ausführliche Erläuterung der Vergleichssortierung und der Schnellsortierung

Ausführliche Erläuterung der Vergleichssortierung und der Schnellsortierung

Jun 27, 2017 am 09:52 AM
快速 排序 比较

Quick Sort (kurz Quick Sort) wird aufgrund seiner hohen Effizienz (durchschnittliches O(nlogn)) häufig in schriftlichen Prüfungsfragen getestet.

Der erste Schritt zum schnellen Sortieren besteht darin, eine „Basis“ auszuwählen, die zum Vergleich und Austausch mit anderen Zahlen verwendet wird. Die Wahl dieser „Basis“ wirkt sich auf die Effizienz der schnellen Sortierung aus, aber wenn Sie die Basis um der Basis willen wählen, wird das Pferd von hinten aufgezäumt. Um beispielsweise die optimale Basis zu finden, müssen Sie den Median in der gesamten zu sortierenden Sequenz finden, aber das Finden des Medians ist tatsächlich sehr kostspielig. Die Wahl der Basis ist normalerweise das erste Objekt, das mittlere Objekt oder das letzte Objekt in der zu sortierenden Reihenfolge. In diesem Artikel wird die Auswahl des ersten Elements als Beispiel für eine kurze Analyse und Implementierung der Schnellsortierung verwendet.

Wählen Sie am Beispiel der zu sortierenden Spalte {6, 5, 3, 1, 7, 2, 4} das erste Element 6 als Basis aus.

Nachdem Sie die Basis ausgewählt haben, müssen Sie die Array-Elemente vergleichen und mit ihnen austauschen. Der zweite Schritt der Schnellsortierung besteht darin, einen „Sentinel“ für das erste und das letzte Element des Arrays festzulegen.

Nachdem Sie die Basis ausgewählt und den Wächter eingestellt haben, besteht der nächste Schritt darin, den Vergleich zu starten. Platzieren Sie die Basis mit dem Der letzte Sentinel j wird zuerst verglichen, und wenn er größer als Sentinel j ist, wird er mit Sentinel i+1 ausgetauscht.

Zu diesem Zeitpunkt wird die Basis nicht mehr mit Sentinel j verglichen, sondern mit Sentinel i. Wenn die Basis größer als Sentinel i ist, bewegt sich der Sentinel rückwärts, bis er es ist Bisher wurde Sentinel J-1 gleichzeitig ausgetauscht.

Wiederholen Sie die obigen Schritte und vergleichen Sie die Basis mit Sentinel J.

Das Endergebnis zeigt, dass die Position von Sentinel i = die Position von Sentinel j ist. Zu diesem Zeitpunkt wird dieser Position der Basiswert zugewiesen.

Auf diese Weise sind die Zahlen auf der linken Seite der Basis 6 alle kleiner als diese und die Zahlen auf der rechten Seite alle größer als sie Um die gleichen Schritte für das linke und rechte Array auszuführen, um die Basis auszuwählen und Sentinel festzulegen, kann die Sortierung am Ende abgeschlossen werden.

 Java

 1 package com.algorithm.sort.quick; 2  3 import java.util.Arrays; 4  5 /** 6  * 快速排序 7  * Created by yulinfeng on 2017/6/26. 8  */ 9 public class Quick {10     public static void main(String[] args) {11         int[] nums = {6, 5, 3, 1, 7, 2, 4};12         nums = quickSort(nums, 0, nums.length - 1);13         System.out.println(Arrays.toString(nums));14     }15     16     /**17      * 快速排序18      * @param nums 待排序数组序列19      * @param left 数组第一个元素索引20      * @param right 数组最后一个元素索引21      * @return 排好序的数组序列22      */23     private static int[] quickSort(int[] nums, int left, int right) {24         if (left < right) {25             int temp = nums[left];    //基数26             int i = left;    //哨兵i27             int j = right;    //哨兵j28             while (i < j) {29                 while (i < j && nums[j] >= temp) {30                     j--;31                 }32                 if (i < j) {33                     nums[i] = nums[j];34                     i++;35                 }36                 while (i < j && nums[i] < temp) {37                     i++;38                 }39                 while (i < j) {40                     nums[j] = nums[i];41                     j--;42                 }43             }44             nums[i] = temp;45             quickSort(nums, left, i - 1);46             quickSort(nums, i + 1, right);47         }48         return nums;49     }50 }
Nach dem Login kopieren

 Python3

 1 #快速排序 2 def quick_sort(nums, left, right): 3     if left < right: 4         temp = nums[left]    #基数 5         i = left    #哨兵i 6         j = right    #哨兵j 7         while i < j: 8             while i < j and nums[j] >= temp: 9                 j -= 110             if i < j:11                 nums[i] = nums[j]12                 i += 113             while i < j and nums[i] < temp:14                 i += 115             if i < j:16                 nums[j] = nums[i]17                 j -= 118         nums[i] = temp19         quick_sort(nums, left, i - 1)20         quick_sort(nums, i + 1, right)21     22     return nums23 24 nums = [6, 5, 3, 1, 7, 2, 4]25 nums = quick_sort(nums, 0, len(nums) - 1)26 print(nums)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Vergleichssortierung und der Schnellsortierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1655
14
PHP-Tutorial
1252
29
C#-Tutorial
1226
24
Wie aktiviere ich die NFC-Funktion auf dem Xiaomi Mi 14 Pro? Wie aktiviere ich die NFC-Funktion auf dem Xiaomi Mi 14 Pro? Mar 19, 2024 pm 02:28 PM

Heutzutage werden Leistung und Funktionen von Mobiltelefonen immer leistungsfähiger. Nahezu alle Mobiltelefone sind mit komfortablen NFC-Funktionen ausgestattet, um Benutzern das mobile Bezahlen und die Identitätsauthentifizierung zu erleichtern. Einige Xiaomi 14Pro-Benutzer wissen jedoch möglicherweise nicht, wie sie die NFC-Funktion aktivieren können. Als nächstes möchte ich es Ihnen im Detail vorstellen. Wie aktiviere ich die NFC-Funktion auf dem Xiaomi 14Pro? Schritt 1: Öffnen Sie das Einstellungsmenü Ihres Telefons. Schritt 2: Suchen Sie die Option „Verbinden und teilen“ oder „Drahtlos und Netzwerke“ und klicken Sie darauf. Schritt 3: Suchen Sie im Menü „Verbindung & Freigabe“ oder „Drahtlos & Netzwerke“ nach „NFC & Zahlungen“ und klicken Sie darauf. Schritt 4: Suchen Sie nach „NFC Switch“ und klicken Sie darauf. Im Allgemeinen ist die Standardeinstellung deaktiviert. Schritt 5: Klicken Sie auf der NFC-Umschaltseite auf die Schaltfläche zum Einschalten.

CAD-Zeichnungen des iPhone 16 Pro werden angezeigt und eine zweite neue Schaltfläche hinzugefügt CAD-Zeichnungen des iPhone 16 Pro werden angezeigt und eine zweite neue Schaltfläche hinzugefügt Mar 09, 2024 pm 09:07 PM

Die CAD-Dateien des iPhone 16 Pro wurden veröffentlicht und das Design stimmt mit früheren Gerüchten überein. Letzten Herbst hat das iPhone 15 Pro eine Aktionstaste hinzugefügt, und in diesem Herbst plant Apple offenbar, kleinere Anpassungen an der Größe der Hardware vorzunehmen. Hinzufügen einer Aufnahmetaste Gerüchten zufolge könnte das iPhone 16 Pro eine zweite neue Taste hinzufügen, was nach dem letzten Jahr das zweite Jahr in Folge sein wird, in dem eine neue Taste hinzugefügt wird. Gerüchten zufolge wird die neue Aufnahmetaste auf der unteren rechten Seite des iPhone 16 Pro angebracht. Dieses Design soll die Kamerasteuerung komfortabler machen und auch die Verwendung der Aktionstaste für andere Funktionen ermöglichen. Dieser Knopf wird nicht länger nur ein gewöhnlicher Auslöser sein. Bezüglich der Kamera, vom aktuellen iP

Mar 18, 2024 pm 03:00 PM

Das Gleiten des Bildschirms durch die Luft ist eine Funktion von Huawei, die in der Huawei mate60-Serie sehr gelobt wird. Diese Funktion nutzt den Lasersensor am Telefon und die 3D-Tiefenkamera der Frontkamera, um eine Reihe von Funktionen auszuführen, die nicht erforderlich sind Funktion zum Berühren des Bildschirms, z. B. das Wischen von TikTok aus der Luft, aber wie kann man mit dem Huawei Pocket 2 TikTok aus der Luft wischen? Wie mache ich mit Huawei Pocket2 Screenshots aus der Luft? 1. Öffnen Sie die Einstellungen des Huawei Pocket2 2. Wählen Sie dann [Barrierefreiheit]. 3. Klicken Sie, um [Smart Perception] zu öffnen. 4. Schalten Sie einfach die Schalter [Air Swipe Screen], [Air Screenshot] und [Air Press] ein. 5. Wenn Sie es verwenden, müssen Sie es 20–40 cm vom Bildschirm entfernt halten, Ihre Handfläche öffnen und warten, bis das Handflächensymbol auf dem Bildschirm erscheint.

So legen Sie den Zeilenabstand in WPS Word fest, um das Dokument übersichtlicher zu gestalten So legen Sie den Zeilenabstand in WPS Word fest, um das Dokument übersichtlicher zu gestalten Mar 20, 2024 pm 04:30 PM

WPS ist unsere häufig verwendete Office-Software. Bei der Bearbeitung langer Artikel sind die Schriftarten oft zu klein, um klar gesehen zu werden, daher werden die Schriftarten und das gesamte Dokument angepasst. Zum Beispiel: Durch Anpassen des Zeilenabstands wird das gesamte Dokument sehr klar. Ich schlage vor, dass alle Freunde diesen Arbeitsschritt lernen. Die spezifischen Arbeitsschritte sind wie folgt. Öffnen Sie die WPS-Textdatei, die Sie anpassen möchten, suchen Sie die Symbolleiste für die Absatzeinstellung im Menü [Start] und Sie sehen das kleine Symbol für die Einstellung des Zeilenabstands (im Bild als roter Kreis dargestellt). 2. Klicken Sie auf das kleine umgekehrte Dreieck in der unteren rechten Ecke der Zeilenabstandseinstellung. Der entsprechende Zeilenabstandswert wird angezeigt. Sie können den 1- bis 3-fachen Zeilenabstand auswählen (wie durch den Pfeil in der Abbildung dargestellt). 3. Oder klicken Sie mit der rechten Maustaste auf den Absatz und er wird angezeigt

TrendX Research Institute: Merlin Chain-Projektanalyse und ökologische Bestandsaufnahme TrendX Research Institute: Merlin Chain-Projektanalyse und ökologische Bestandsaufnahme Mar 24, 2024 am 09:01 AM

Laut Statistiken vom 2. März hat der Gesamt-TVL des Bitcoin-Zweitschichtnetzwerks MerlinChain 3 Milliarden US-Dollar erreicht. Darunter machten die ökologischen Bitcoin-Vermögenswerte 90,83 % aus, darunter BTC im Wert von 1,596 Milliarden US-Dollar und BRC-20-Vermögenswerte im Wert von 404 Millionen US-Dollar. Letzten Monat erreichte der Gesamt-TVL von MerlinChain innerhalb von 14 Tagen nach dem Start der Absteckaktivitäten 1,97 Milliarden US-Dollar und übertraf damit Blast, das im November letzten Jahres gestartet wurde und auch das jüngste und gleichermaßen auffälligste ist. Am 26. Februar überstieg der Gesamtwert der NFTs im MerlinChain-Ökosystem 420 Millionen US-Dollar und wurde damit neben Ethereum zum öffentlichen Kettenprojekt mit dem höchsten NFT-Marktwert. Projekteinführung MerlinChain ist eine OKX-Unterstützung

Was ist der Unterschied im Pfad „Arbeitsplatz' in Win11? Schneller Weg, es zu finden! Was ist der Unterschied im Pfad „Arbeitsplatz' in Win11? Schneller Weg, es zu finden! Mar 29, 2024 pm 12:33 PM

Was ist der Unterschied im Pfad „Arbeitsplatz“ in Win11? Schneller Weg, es zu finden! Da das Windows-System ständig aktualisiert wird, bringt auch das neueste Windows 11-System einige neue Änderungen und Funktionen mit sich. Eines der häufigsten Probleme besteht darin, dass Benutzer den Pfad zu „Arbeitsplatz“ im Win11-System nicht finden können. Dies war in früheren Windows-Systemen normalerweise ein einfacher Vorgang. In diesem Artikel erfahren Sie, wie sich der Pfad „Arbeitsplatz“ im Win11-System unterscheidet und wie Sie ihn schnell finden. Unter Windows1

So sortieren Sie WPS-Ergebnisse So sortieren Sie WPS-Ergebnisse Mar 20, 2024 am 11:28 AM

Bei unserer Arbeit verwenden wir häufig WPS-Software. Es gibt viele Möglichkeiten, Daten in WPS-Software zu verarbeiten, und die Funktionen sind auch sehr leistungsfähig. Wir verwenden häufig Funktionen, um Durchschnittswerte, Zusammenfassungen usw. zu ermitteln Methoden, die für statistische Daten verwendet werden können, wurden für alle in der WPS-Softwarebibliothek vorbereitet. Nachfolgend stellen wir die Schritte zum Sortieren der Ergebnisse in WPS vor. Nachdem Sie dies gelesen haben, können Sie aus der Erfahrung lernen. 1. Öffnen Sie zunächst die Tabelle, die eingestuft werden soll. Wie nachfolgend dargestellt. 2. Geben Sie dann die Formel =rank(B2, B2: B5, 0) ein und achten Sie darauf, 0 einzugeben. Wie nachfolgend dargestellt. 3. Drücken Sie nach Eingabe der Formel die Taste F4 auf der Computertastatur. In diesem Schritt wird der relative Bezug in einen absoluten Bezug umgewandelt.

Der Unterschied und die vergleichende Analyse zwischen C-Sprache und PHP Der Unterschied und die vergleichende Analyse zwischen C-Sprache und PHP Mar 20, 2024 am 08:54 AM

Unterschiede und vergleichende Analyse zwischen C-Sprache und PHP C-Sprache und PHP sind beide gängige Programmiersprachen, weisen jedoch in vielen Aspekten offensichtliche Unterschiede auf. In diesem Artikel wird eine vergleichende Analyse der C-Sprache und PHP durchgeführt und die Unterschiede zwischen ihnen anhand spezifischer Codebeispiele veranschaulicht. 1. Syntax und Verwendung: C-Sprache: Die C-Sprache ist eine prozessorientierte Programmiersprache, die hauptsächlich für die Programmierung auf Systemebene und die eingebettete Entwicklung verwendet wird. Die Syntax der C-Sprache ist relativ einfach und auf niedriger Ebene, kann den Speicher direkt bedienen und ist effizient und flexibel. Die C-Sprache betont die Vollständigkeit des Programms durch den Programmierer

See all articles