Inhaltsverzeichnis
Einfache Auswahlsortierung
Code-Implementierung
Blasensortierung
Einfache Einfügungssortierung Im besten Fall muss n-1 Mal verglichen werden, ohne Elemente auszutauschen, und im schlimmsten Fall beträgt die Zeitkomplexität O(n). immer noch O(n2). Wenn die Array-Elemente jedoch zufällig angeordnet sind, ist die Einfügungssortierung immer noch besser als die beiden oben genannten Sortierungen.
Heim Java javaLernprogramm So implementieren Sie eine einfache Sortierung in Java

So implementieren Sie eine einfache Sortierung in Java

Apr 17, 2023 pm 08:55 PM
java

    Sortieren ist eine sehr häufige und zentrale Operation in der Datenverarbeitung, obwohl die Wahrscheinlichkeit gering ist, dass wir sie in der tatsächlichen Projektentwicklung manuell implementieren müssen. Schließlich gibt es in jeder Klasse mehrere Implementierungen von Sortieralgorithmen Bibliothek. Dennoch ist es für uns von großem Nutzen, diese subtilen Ideen zu verstehen. Dieser Artikel gibt einen kurzen Überblick über die drei grundlegendsten Arten von Algorithmen: Auswahl, Bubbling und Einfügung.

    Definieren Sie zunächst eine Funktion zum Austauschen von Array-Elementen, die beim Sortieren aufgerufen werden kann

    /**
         * 交换数组元素
         * @param arr
         * @param a
         * @param b
         */
        public static void swap(int []arr,int a,int b){
            arr[a] = arr[a]+arr[b];
            arr[b] = arr[a]-arr[b];
            arr[a] = arr[a]-arr[b];
        }
    Nach dem Login kopieren

    Einfache Auswahlsortierung

    Die einfache Auswahlsortierung ist der einfachste und intuitivste Algorithmus. Die Grundidee besteht darin, den kleinsten Wert aus den Datenelementen auszuwählen Das in jedem Durchgang sortierte Element (oder das größte) wird als erstes Element verwendet, bis alle Elemente sortiert sind. Die einfache Auswahlsortierung ist eine instabile Sortierung.

    Wenn der Algorithmus implementiert ist, wird bei jeder Bestimmung des Mindestelements die erste Position durch ständigen Vergleich und Austausch zum aktuellen Minimum. Der Austausch ist ein relativ zeitaufwändiger Vorgang. Tatsächlich können wir leicht feststellen, dass dieser Austausch bedeutungslos ist, bevor das aktuelle Mindestelement vollständig bestimmt ist. Wir können eine Variable min festlegen, um für jeden Vergleich nur den Array-Index des kleineren Elements zu speichern. Wenn die Schleife endet, speichert diese Variable den Index des aktuell kleinsten Elements und führt dann die Austauschoperation aus. Die Code-Implementierung ist sehr einfach, werfen wir einen Blick darauf.

    Code-Implementierung

    /**
         * 简单选择排序
         *
         * @param arr
         */
        public static void selectSort(int[] arr) {
            for (int i = 0; i < arr.length - 1; i++) {
                int min = i;//每一趟循环比较时,min用于存放较小元素的数组下标,这样当前批次比较完毕最终存放的就是此趟内最小的元素的下标,避免每次遇到较小元素都要进行交换。
                for (int j = i + 1; j < arr.length; j++) {
                    if (arr[j] < arr[min]) {
                        min = j;
                    }
                }
                //进行交换,如果min发生变化,则进行交换
                if (min != i) {
                    swap(arr,min,i);
                }
            }
        }
    Nach dem Login kopieren

    Nachdem die einfache Auswahlsortierung oben optimiert wurde, bleibt die Anzahl der Vergleiche unabhängig von der ursprünglichen Anordnung des Arrays für Austauschoperationen unverändert. Im besten Fall gibt es keine Austauschbewegungen, wenn das Array vollständig geordnet ist erforderlich, im schlimmsten Fall, das heißt, wenn das Array in umgekehrter Reihenfolge ist, beträgt die Anzahl der Austausche n-1. Zusammenfassend ist die Zeitkomplexität O(n2)

    Blasensortierung

    Die Grundidee der Blasensortierung besteht darin, benachbarte Elemente paarweise zu vergleichen und in umgekehrter Reihenfolge auszutauschen. Auf diese Weise wird jeder Durchgang am kleinsten Oder das größte Element „schwebt“ nach oben und erreicht schließlich die vollständige Reihenfolge ,1,2,3], nach der Ausführung von zwei Blasen, also nach zwei äußeren Schleifen, werden 5 und 4 jeweils an die Endposition [1,2,3,4,5] angepasst. Zu diesem Zeitpunkt wurde nach der Ausführung der dritten Schleife noch kein einziger Austausch durchgeführt, was bedeutet, dass die verbleibenden Sequenzen bereits in Ordnung sind und der Sortiervorgang abgeschlossen werden kann. Werfen wir einen Blick auf den Code Wenn das ursprüngliche Array selbst geordnet ist (dies ist der beste Fall), können nur n-1 Vergleiche abgeschlossen werden. Wenn die Reihenfolge umgekehrt ist, beträgt die Anzahl der Vergleiche n-1+n-2+. ..+1=n (n-1)/2, die Anzahl der Austausche und die Anzahl der Vergleiche sind gleich. Daher beträgt seine zeitliche Komplexität immer noch O(n2). Insgesamt ist die Leistung der Blasensortierung immer noch etwas schlechter als die der oben genannten Auswahlsortierung.

    DirekteinfügungssortierungSo implementieren Sie eine einfache Sortierung in Java

    Die Grundidee der Direkteinfügungssortierung besteht darin, bei jedem Schritt einen zu sortierenden Datensatz in die zuvor sortierte Reihenfolge einzufügen, bis alle Elemente eingefügt sind.

    Code-Implementierung

    /**
         * 冒泡排序
         *
         * @param arr
         */
        public static void bubbleSort(int[] arr) {
            for (int i = 0; i < arr.length - 1; i++) {
                boolean flag = true;//设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成。
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] > arr[j + 1]) {
                        swap(arr,j,j+1);
                        flag = false;
                    }
                }
                if (flag) {
                    break;
                }
            }
        }
    Nach dem Login kopieren

    Einfache Einfügungssortierung Im besten Fall muss n-1 Mal verglichen werden, ohne Elemente auszutauschen, und im schlimmsten Fall beträgt die Zeitkomplexität O(n). immer noch O(n2). Wenn die Array-Elemente jedoch zufällig angeordnet sind, ist die Einfügungssortierung immer noch besser als die beiden oben genannten Sortierungen.

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine einfache Sortierung in Java. 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

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

    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)

    Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

    Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

    Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

    Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

    Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

    Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

    In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

    Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

    Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

    Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

    Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

    Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

    Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

    See all articles