suchen
HeimJavajavaLernprogrammGemeinsame Nutzung von Blasensortiercodes für den klassischen Java-Algorithmus

Originaltitel: Klassischer Algorithmus in Java: Bubble Sort (Bubble Sort)

Was ist Bubble Sort?

Bubble Sort ist ein einfacher Sortieralgorithmus, der Elemente basierend auf der Reihenfolge paarweise miteinander vergleicht. Wenn die Reihenfolge von groß nach klein ist, wird beim Vergleich zweier Elemente das größere zuerst eingestuft, andernfalls wird das größere später eingestuft. Die Blasensortierung wird in die Sortierung von groß nach klein und die Sortierung von klein nach groß unterteilt.

Prinzip: Vergleichen Sie zwei benachbarte Elemente und tauschen Sie das Element mit dem größeren Wert am rechten Ende aus.

Idee: Vergleichen Sie nacheinander zwei benachbarte Zahlen, setzen Sie die Dezimalzahl voran und die große Zahl hinten. Das heißt, im ersten Durchgang: Vergleichen Sie zunächst die erste und die zweite Zahl, setzen Sie die Dezimalzahlen voran und die großen Zahlen hinten. Vergleichen Sie dann die zweite und die dritte Zahl, setzen Sie die Dezimalzahl voran und die große Zahl hinten und machen Sie so weiter, bis Sie die letzten beiden Zahlen vergleichen, stellen Sie die Dezimalstelle voran und die große Zahl hinten. Wiederholen Sie den ersten Schritt, bis die Sortierung abgeschlossen ist.

Beispiel: So sortieren Sie das Array: int[] arr={6,3,8,2,9,1};

Erste Sortierung:

Erste Sortierung: 6 und 3 Vergleich, 6 ist größer als 3, Positionen tauschen: 3 6 8 2 9 1

Zweite Sortierung : 6 und 8 werden verglichen, 6 ist kleiner als 8, kein Positionstausch: 3 6 8 2 9 1

Die dritte Sortierung: 8 und 2 werden verglichen, 8 ist größer als 2 , Austauschposition: 3 6 2 8 9 1

Die vierte Ordnung: 8 und 9Vergleich, 8 ist kleiner als 9, kein Positionstausch: 3 6 2 8 9 1

Die fünfte Sortierung: 9 und 1 Vergleich: 9 ist größer als 1, Positionen tauschen: 3 6 2 8 1 9

Insgesamt wurden bei der ersten Fahrt 5 Vergleiche durchgeführt und die Sortierergebnisse waren: 3 6 2 8 1 9

--------------------------------- --- ---------

Zweite Sortierung:

Erste Sortierung: 3 und 6 im Vergleich ist 3 kleiner als 6 , Positionen nicht vertauschen: 3 6 2 8 1 9

Die zweite Sortierung: 6 und 2 Vergleich, 6 ist größer als 2, Positionen tauschen: 3 2 6 8 1 9

Die dritte Rangliste: 6 und 8 Vergleichen Sie, 6 ist größer als 8, ohne Positionstausch: 3 2 6 8 1 9

Die vierte Sortierung: 8 und 1 Vergleich, 8 ist größer als 1, Positionen tauschen: 3 2 6 1 8 9

Im zweiten Durchgang wurden insgesamt 4 Vergleiche durchgeführt, und die Sortierergebnisse waren: 3 2 6 1 8 9

---- --------------------------------------- ----------- ---------------

Die dritte Sortierung:

Die erste Sortierung: 3 Im Vergleich zu 2 ist 3 größer als 2, Positionen tauschen: 2 3 6 1 8 9

Zweite Sortierung: 3 und 6 Vergleichen Sie, 3 ist kleiner als 6, Positionen nicht tauschen: 2 3 6 1 8 9

Die dritte Sortierung: 6 und 1 Vergleich, 6 Größer als 1, Positionen tauschen: 2 3 1 6 8 9

Die zweite Fahrt wird durchgeführt insgesamt 3 Vergleiche, Sortierergebnisse: 2 3 1 6 8 9

----------- - ------------------------------------------------- - -------

Die vierte Sortierung:

Die erste Sortierung: 2 und 3 Vergleich, 2 ist kleiner als 3, kein Positionstausch: 2 3 1 6 8 9

Zweite Sortierung: 3 und 1 Vergleich , 3 ist größer als 1, Positionen tauschen: 2 1 3 6 8 9

Bei der zweiten Fahrt wurden insgesamt 2 Vergleiche durchgeführt, Sortierergebnisse: 2 1 3 6 8 9

------------------------------ --- -------

Fünfte Sortierung:

Erste Sortierung: 2 und 1 werden verglichen, 2 ist größer als 1, Tauschpositionen: 1 2 3 6 8 9

Die zweite Fahrt wurde insgesamt 1mal vergleichen, Ergebnisse sortieren: 1 2 3 6 8 9

--------------------------------- ---------- -------------------------- --------

Endergebnis:1 2 3 6 8 9

------ ----------- ------------------------- -----------

Es ist ersichtlich, dass: N Zahlen sortiert werden müssen und insgesamt N-1 Sortierung wird jedes Mal durchgeführt. Die Anzahl der Sortiervorgänge für i beträgt (N-i) Mal, sodass Sie eine Doppelschleifenanweisung verwenden können. Die äußere Ebene steuert, wie oft die Schleife ausgeführt wird, und die innere Ebene steuert, wie oft die Schleife ausgeführt wird. Die Ebene steuert die Anzahl der Schleifen für jeden Durchgang, d. h.


for(int i=1;i<arr.length><p><br></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;">Vorteile der Blasensortierung: Jedes Mal, wenn eine Sortierung durchgeführt wird, gibt es einen Vergleich weniger, da jedes Mal, wenn a pass wird durchgeführt. Beim Sortieren wird immer ein größerer Wert gefunden. Wie im obigen Beispiel: Nach dem ersten Vergleich muss die letzte Zahl die größte Zahl sein. Bei der zweiten Sortierung müssen nur andere Zahlen außer der letzten Zahl verglichen werden, und Sie können auch die größte Zahl finden hinter den Zahlen, die am zweiten Vergleich teilnehmen, müssen beim dritten Vergleich nur die anderen Zahlen außer den letzten beiden Zahlen verglichen werden, und so weiter... Mit anderen Worten, ohne Vergleich, jedes Mal Ein Vergleich weniger pro Fahrt verringert sich die Menge des Algorithmus bis zu einem gewissen Grad. </span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;">In Bezug auf die zeitliche Komplexität: </span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;"> 1. Wenn unsere Daten in Ordnung sind, benötigen wir nur eine Fahrt, um die Sortierung abzuschließen. Die erforderliche Anzahl der Vergleiche <span style="line-height: 1.5;"> und die Anzahl der Datensatzbewegungen </span> erreichen beide den Mindestwert, das heißt: C<sub>min</sub>=n-1; M<sub>min</sub>=0; deshalb, sprudelnd Die beste Zeitkomplexität der Sortierung ist O<sub>(n). </sub></span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;"><sub> </sub><span style="line-height: 1.5;">2. Wenn unsere Daten leider in umgekehrter Reihenfolge vorliegen, sind n-1 </span><span style="line-height: 1.5;"> Durchgänge erforderlich. Jeder Sortiervorgang erfordert n-i</span> Vergleiche <span style="font-family: Verdana;">(1≤i≤n-1)</span><span style="font-family: 宋体;">, und jeder Vergleich muss den Datensatz dreimal verschieben, um die Position des Austauschdatensatzes zu erreichen. In diesem Fall erreicht die Anzahl der Vergleiche und Bewegungen das Maximum: <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/ca8563b0fdd9370c1ec2f8b97a00d59c-0.jpg?x-oss-process=image/resize,p_40" class="lazy" alt=""><span   style="max-width:90%">Die schlechteste Zeitkomplexität der Blasensortierung ist: O<sub>(n<sup>2</sup>)</sub>. </span></span></span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;"><span style="font-family: 宋体;"><span style="line-height: 1.5;">Zusammenfassend: Die gesamte durchschnittliche Zeitkomplexität der Blasensortierung beträgt: O<sub>(n<sup>2 </sup>)</sub></span></span><span style="line-height: 1.5;">. </span></span></p>
<p style="margin-left: 60px;"><strong><span style="line-height: 1.5; color: #003300; font-size: 14px;">Blasensortierungscode für den klassischen Java-Algorithmus </span></strong><span style="line-height: 1.5; color: #003300; font-size: 14px;">: </span></p>
<pre class="brush:php;toolbar:false">/*
 * 冒泡排序 */public class BubbleSort {
  public static void main(String[] args) {
    int[] arr={6,3,8,2,9,1};
    System.out.println("排序前数组为:");
    for(int num:arr){
      System.out.print(num+" ");
    }
    for(int i=0;i<arr.length-1>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    } 
    System.out.println();
    System.out.println("排序后的数组为:");
     for(int num:arr){
       System.out.print(num+" ");
     } 
  }
 }</arr.length-1>

Für Weitere Informationen zum Blasensortieren mit dem klassischen Java-Algorithmus finden Sie auf der chinesischen PHP-Website!

Stellungnahme
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
Warum ist Java eine beliebte Wahl für die Entwicklung plattformübergreifender Desktop-Anwendungen?Warum ist Java eine beliebte Wahl für die Entwicklung plattformübergreifender Desktop-Anwendungen?Apr 25, 2025 am 12:23 AM

Javaispopularforcross-plattformdesktopapplicationsduetoits "writeonce, runanywhere" philosophy.1) itusesBytecodethatrunsonanyjvm-tequippedplatform.2) BibliothekenlikeswingandjavafxHelPcreeTsuokninguis.3) itsextsextSesiveSivestandsupports-Lyuis.3) itsextsextSesiveSivestandsupports-Lyuis.3) itsextsextSextsenSivestandsupports-Capo- und --3) itsextsextSextSesiveSivestandsuppandSpommes-Capo-

Besprechen Sie Situationen, in denen das Schreiben von Plattform-spezifischer Code in Java erforderlich ist.Besprechen Sie Situationen, in denen das Schreiben von Plattform-spezifischer Code in Java erforderlich ist.Apr 25, 2025 am 12:22 AM

Gründe für das Schreiben von plattformspezifischem Code in Java sind Zugriff auf bestimmte Betriebssystemfunktionen, die Interaktion mit spezifischer Hardware und die Optimierung der Leistung. 1) Verwenden Sie JNA oder JNI, um auf die Windows -Registrierung zuzugreifen. 2) mit Linux-spezifischen Hardware-Treibern über JNI zu interagieren; 3) Verwenden Sie Metal, um die Spiele auf MacOS über JNI zu optimieren. Das Schreiben von Plattform-spezifischer Code kann jedoch die Portabilität des Codes beeinflussen, die Komplexität erhöhen und potenziell Leistungsaufwand und Sicherheitsrisiken darstellen.

Was sind die zukünftigen Trends in der Java -Entwicklung, die sich auf die Unabhängigkeit der Plattform beziehen?Was sind die zukünftigen Trends in der Java -Entwicklung, die sich auf die Unabhängigkeit der Plattform beziehen?Apr 25, 2025 am 12:12 AM

Java wird die Unabhängigkeit der Plattform durch Cloud-native Anwendungen, die Bereitstellung von Multi-Plattform und die Interoperabilität von Cloud-nativen verbessern. 1) Native Cloud -Anwendungen verwenden Graalvm und Quarkus, um die Startgeschwindigkeit zu erhöhen. 2) Java wird auf eingebettete Geräte, mobile Geräte und Quantencomputer ausgedehnt. 3) Durch Graalvm wird sich Java nahtlos in Sprachen wie Python und JavaScript integrieren, um die Interoperabilität der Cross-Sprache zu verbessern.

Wie trägt die starke Typisierung von Java zur Unabhängigkeit der Plattform bei?Wie trägt die starke Typisierung von Java zur Unabhängigkeit der Plattform bei?Apr 25, 2025 am 12:11 AM

Das stark typisierte System von Java sorgt für die Unabhängigkeit der Plattform durch Typsicherheit, einheitlicher Typumwandlung und Polymorphismus. 1) GEYPECTE SEITET TYP -Überprüfung zum Kompilierungszeit, um Laufzeitfehler zu vermeiden. 2) Einheitliche Konvertierungsregeln für Typen sind auf allen Plattformen konsistent. 3) Polymorphismus und Grenzflächenmechanismen verhalten den Code konsequent auf verschiedenen Plattformen.

Erklären Sie, wie Java Native Interface (JNI) die Unabhängigkeit der Plattform beeinträchtigen kann.Erklären Sie, wie Java Native Interface (JNI) die Unabhängigkeit der Plattform beeinträchtigen kann.Apr 25, 2025 am 12:07 AM

JNI wird die Unabhängigkeit von Javas Plattform zerstören. 1) JNI erfordert lokale Bibliotheken für eine bestimmte Plattform, 2) lokaler Code muss auf der Zielplattform zusammengestellt und verknüpft werden.

Gibt es aufkommende Technologien, die die Unabhängigkeit der Plattform von Java bedrohen oder verbessern?Gibt es aufkommende Technologien, die die Unabhängigkeit der Plattform von Java bedrohen oder verbessern?Apr 24, 2025 am 12:11 AM

Aufstrebende Technologien stellen sowohl Bedrohungen dar und verbessert die Plattformunabhängigkeit von Java. 1) Cloud Computing- und Containerisierungstechnologien wie Docker verbessern die Unabhängigkeit der Java -Plattform, müssen jedoch optimiert werden, um sich an verschiedene Cloud -Umgebungen anzupassen. 2) WebAssembly erstellt Java -Code über Graalvm, wodurch die Unabhängigkeit der Plattform erweitert wird, muss jedoch mit anderen Sprachen um die Leistung konkurrieren.

Was sind die unterschiedlichen Implementierungen des JVM und bieten alle die gleiche Unabhängigkeit der Plattform?Was sind die unterschiedlichen Implementierungen des JVM und bieten alle die gleiche Unabhängigkeit der Plattform?Apr 24, 2025 am 12:10 AM

Verschiedene JVM -Implementierungen können die Unabhängigkeit von Plattformen bieten, ihre Leistung ist jedoch etwas unterschiedlich. 1. OracleHotSpot und OpenJDKJVM können in der Plattformunabhängigkeit ähnlich erfolgen, aber OpenJDK erfordert möglicherweise eine zusätzliche Konfiguration. 2. IBMJ9JVM führt eine Optimierung für bestimmte Betriebssysteme durch. 3.. Graalvm unterstützt mehrere Sprachen und erfordert zusätzliche Konfiguration. 4. Azulzingjvm erfordert spezifische Plattformanpassungen.

Wie reduziert die Unabhängigkeit der Plattform die Entwicklungskosten und die Zeit?Wie reduziert die Unabhängigkeit der Plattform die Entwicklungskosten und die Zeit?Apr 24, 2025 am 12:08 AM

Die Unabhängigkeit der Plattform senkt die Entwicklungskosten und verkürzt die Entwicklungszeit, indem es denselben Code -Satz auf mehreren Betriebssystemen ausführt. Insbesondere manifestiert es sich als: 1. Reduzieren Sie die Entwicklungszeit, es ist nur ein Codesatz erforderlich; 2. Reduzieren Sie die Wartungskosten und vereinen Sie den Testprozess; 3.. Schnelle Iteration und Teamzusammenarbeit, um den Bereitstellungsprozess zu vereinfachen.

See all articles

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

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

MinGW – Minimalistisches GNU für Windows

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.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft