Wie man prüft, ob ein Array in Java sortiert ist

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob ein Array von Zahlen in Java sortiert ist. Wir werden das grundlegende Konzept des Vergleichs benachbarter Elemente untersuchen, das ein zentraler Gedanke in vielen Sortieralgorithmen ist. Sie werden lernen, wie Sie sowohl auf aufsteigende als auch auf absteigende Reihenfolge prüfen können und wie Sie Fälle behandeln können, in denen Elemente gleich sind. Am Ende dieses Labs werden Sie ein solides Verständnis der Logik haben, die erforderlich ist, um zu bestimmen, ob ein Array sortiert ist.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/DataStructuresGroup -.-> java/sorting("Sorting") subgraph Lab Skills java/operators -.-> lab-560004{{"Wie man prüft, ob ein Array in Java sortiert ist"}} java/if_else -.-> lab-560004{{"Wie man prüft, ob ein Array in Java sortiert ist"}} java/sorting -.-> lab-560004{{"Wie man prüft, ob ein Array in Java sortiert ist"}} end

Vergleich benachbarter Elemente für die Sortierung

In diesem Schritt werden wir das grundlegende Konzept des Vergleichs benachbarter Elemente untersuchen, das ein zentraler Gedanke in vielen Sortieralgorithmen ist. Sortieren ist der Prozess, Elemente in einer bestimmten Reihenfolge anzuordnen, wie z. B. aufsteigend oder absteigend.

Stellen Sie sich vor, Sie haben eine Liste von Zahlen und möchten sie von der kleinsten zur größten sortieren. Ein einfacher Weg, um zu beginnen, ist es, zwei nebeneinander liegende Zahlen zu betrachten und zu entscheiden, welche zuerst kommen sollte.

Lassen Sie uns ein einfaches Java-Programm erstellen, um diese Idee zu demonstrieren. Wir werden eine Klasse erstellen, die zwei Zahlen vergleicht.

  1. Öffnen Sie die Datei HelloJava.java im WebIDE-Editor, wenn sie noch geöffnet ist. Wir werden diese Datei für unser neues Programm ändern.

  2. Ersetzen Sie den gesamten Inhalt der Datei durch den folgenden Code:

    public class CompareNumbers {
        public static void main(String[] args) {
            int number1 = 15;
            int number2 = 10;
    
            System.out.println("Comparing " + number1 + " and " + number2 + ":");
    
            if (number1 > number2) {
                System.out.println(number1 + " is greater than " + number2);
            } else if (number1 < number2) {
                System.out.println(number1 + " is less than " + number2);
            } else {
                System.out.println(number1 + " is equal to " + number2);
            }
        }
    }

    Schauen wir uns die neuen Teile dieses Codes an:

    • public class CompareNumbers: Wir haben den Klassennamen in CompareNumbers geändert, um besser zu widerspiegeln, was das Programm macht. Denken Sie daran, dass der Dateiname mit dem Klassennamen übereinstimmen muss, also müssen wir die Datei später umbenennen.
    • int number1 = 15; und int number2 = 10;: Diese Zeilen deklarieren zwei Ganzzahlvariablen, number1 und number2, und weisen ihnen Anfangswerte zu.
    • System.out.println("Comparing " + number1 + " and " + number2 + ":");: Diese Zeile gibt eine Nachricht aus, die angibt, welche Zahlen verglichen werden.
    • if (number1 > number2): Dies ist eine if-Anweisung. Sie prüft, ob die Bedingung in den Klammern (number1 > number2) wahr ist. Wenn dies der Fall ist, wird der Code in den geschweiften Klammern {} direkt nach der if-Anweisung ausgeführt.
    • else if (number1 < number2): Dies ist eine else if-Anweisung. Wenn die Bedingung in der if-Anweisung falsch war, wird diese Bedingung (number1 < number2) geprüft. Wenn sie wahr ist, wird der Code in ihren geschweiften Klammern ausgeführt.
    • else: Dies ist eine else-Anweisung. Wenn weder die if- noch die else if-Bedingung wahr war, wird der Code im else-Block ausgeführt.
    • System.out.println(...): Diese Zeilen geben Nachrichten basierend auf dem Vergleichsergebnis aus.
  3. Speichern Sie die Datei (Strg+S oder Cmd+S).

  4. Jetzt müssen wir die Datei umbenennen, damit sie mit dem neuen Klassennamen übereinstimmt. Stellen Sie im Terminal sicher, dass Sie sich im Verzeichnis ~/project befinden:

    cd ~/project
  5. Benennen Sie die Datei mit dem Befehl mv um:

    mv HelloJava.java CompareNumbers.java

    Dieser Befehl verschiebt (benennt um) die Datei HelloJava.java in CompareNumbers.java.

  6. Jetzt kompilieren Sie das neue Programm:

    javac CompareNumbers.java

    Wenn die Kompilierung erfolgreich ist, sollten Sie keine Ausgabe sehen.

  7. Führen Sie schließlich das kompilierte Programm aus:

    java CompareNumbers

    Sie sollten die Ausgabe sehen, die das Vergleichsergebnis anzeigt:

    Comparing 15 and 10:
    15 is greater than 10

Sie haben erfolgreich ein Java-Programm erstellt und ausgeführt, das zwei benachbarte Elemente vergleicht und das Ergebnis ausgibt. Dieser einfache Vergleich ist ein Baustein für komplexere Sortieralgorithmen.

Prüfung auf aufsteigende und absteigende Reihenfolge

Im vorherigen Schritt haben wir gelernt, wie man zwei Zahlen vergleicht. Jetzt erweitern wir dies, um zu prüfen, ob ein Paar benachbarter Zahlen in aufsteigender oder absteigender Reihenfolge ist. Dies ist ein weiteres grundlegendes Konzept, wenn man über Sortieren nachdenkt.

Aufsteigende Reihenfolge bedeutet, Elemente von der kleinsten zur größten anzuordnen (z. B. 1, 5, 10). Absteigende Reihenfolge bedeutet, Elemente von der größten zur kleinsten anzuordnen (z. B. 10, 5, 1).

Wir werden unser Programm CompareNumbers.java ändern, um diese speziellen Reihenfolgen zu prüfen.

  1. Öffnen Sie die Datei CompareNumbers.java im WebIDE-Editor.

  2. Ersetzen Sie den vorhandenen Code durch den folgenden:

    public class CheckOrder {
        public static void main(String[] args) {
            int number1 = 15;
            int number2 = 10;
    
            System.out.println("Checking order of " + number1 + " and " + number2 + ":");
    
            if (number1 < number2) {
                System.out.println("The numbers are in ascending order.");
            } else if (number1 > number2) {
                System.out.println("The numbers are in descending order.");
            } else {
                System.out.println("The numbers are equal.");
            }
        }
    }

    Hier ist, was wir geändert haben:

    • public class CheckOrder: Wir haben den Klassennamen erneut in CheckOrder geändert. Wir müssen die Datei umbenennen, damit sie übereinstimmt.
    • Die if-Bedingung prüft nun, ob number1 kleiner als number2 ist. Wenn dies wahr ist, bedeutet dies, dass sie in aufsteigender Reihenfolge sind.
    • Die else if-Bedingung prüft, ob number1 größer als number2 ist. Wenn dies wahr ist, sind sie in absteigender Reihenfolge.
    • Der else-Block behandelt den Fall, dass die Zahlen gleich sind.
  3. Speichern Sie die Datei (Strg+S oder Cmd+S).

  4. Stellen Sie im Terminal sicher, dass Sie sich im Verzeichnis ~/project befinden:

    cd ~/project
  5. Benennen Sie die Datei um, damit sie mit dem neuen Klassennamen übereinstimmt:

    mv CompareNumbers.java CheckOrder.java
  6. Kompilieren Sie das geänderte Programm:

    javac CheckOrder.java

    Wiederum bedeutet keine Ausgabe, dass die Kompilierung erfolgreich war.

  7. Führen Sie das Programm aus:

    java CheckOrder

    Mit number1 = 15 und number2 = 10 sollte die Ausgabe wie folgt sein:

    Checking order of 15 and 10:
    The numbers are in descending order.
  8. Ändern wir schnell die Zahlen, um den Fall der aufsteigenden Reihenfolge zu sehen. Öffnen Sie CheckOrder.java im Editor und ändern Sie die Werte:

    public class CheckOrder {
        public static void main(String[] args) {
            int number1 = 5; // Changed from 15
            int number2 = 8; // Changed from 10
    
            System.out.println("Checking order of " + number1 + " and " + number2 + ":");
    
            if (number1 < number2) {
                System.out.println("The numbers are in ascending order.");
            } else if (number1 > number2) {
                System.out.println("The numbers are in descending order.");
            } else {
                System.out.println("The numbers are equal.");
            }
        }
    }
  9. Speichern Sie die Datei.

  10. Kompilieren Sie das Programm erneut:

    javac CheckOrder.java
  11. Führen Sie das Programm aus:

    java CheckOrder

    Jetzt sollte die Ausgabe die aufsteigende Reihenfolge widerspiegeln:

    Checking order of 5 and 8:
    The numbers are in ascending order.

Sie haben das Programm erfolgreich geändert, um zu prüfen, ob zwei benachbarte Zahlen in aufsteigender oder absteigender Reihenfolge sind. Dies ist ein entscheidender Schritt beim Verständnis, wie Sortieralgorithmen die richtige Position von Elementen bestimmen.

Behandlung gleicher Elemente

In den vorherigen Schritten haben wir zwei Zahlen verglichen und geprüft, ob sie in aufsteigender oder absteigender Reihenfolge sind. Wir haben auch den Fall berücksichtigt, wenn die Zahlen gleich sind. In diesem Schritt werden wir uns speziell auf die Behandlung des Szenarios konzentrieren, in dem benachbarte Elemente gleich sind.

Beim Sortieren spielt die Reihenfolge gleicher Elemente normalerweise für das endgültige sortierte Ergebnis keine Rolle, aber es ist wichtig, dass unsere Vergleichslogik diesen Fall korrekt erkennt. Unser aktuelles Programm CheckOrder.java behandelt diesen Fall bereits mit dem else-Block. Lassen Sie uns diesen Fall explizit testen.

  1. Öffnen Sie die Datei CheckOrder.java im WebIDE-Editor.

  2. Ändern Sie die Werte von number1 und number2 so, dass sie gleich sind:

    public class CheckOrder {
        public static void main(String[] args) {
            int number1 = 7; // Changed to 7
            int number2 = 7; // Changed to 7
    
            System.out.println("Checking order of " + number1 + " and " + number2 + ":");
    
            if (number1 < number2) {
                System.out.println("The numbers are in ascending order.");
            } else if (number1 > number2) {
                System.out.println("The numbers are in descending order.");
            } else {
                System.out.println("The numbers are equal.");
            }
        }
    }
  3. Speichern Sie die Datei (Strg+S oder Cmd+S).

  4. Stellen Sie im Terminal sicher, dass Sie sich im Verzeichnis ~/project befinden:

    cd ~/project
  5. Kompilieren Sie das geänderte Programm:

    javac CheckOrder.java

    Keine Ausgabe bedeutet, dass die Kompilierung erfolgreich war.

  6. Führen Sie das Programm aus:

    java CheckOrder

    Wenn beide Zahlen auf 7 gesetzt sind, sollte die Ausgabe jetzt wie folgt sein:

    Checking order of 7 and 7:
    The numbers are equal.

Dies bestätigt, dass unser Programm korrekt erkennt, wenn zwei benachbarte Zahlen gleich sind. Die Behandlung dieses Falls ist wichtig für die Vollständigkeit unserer Vergleichslogik.

Im Kontext von Sortieralgorithmen sind benachbarte Elemente, wenn sie gleich sind, bereits in einer gültigen relativen Reihenfolge (je nach Strenge kann sowohl aufsteigend als auch absteigend als wahr betrachtet werden, aber normalerweise werden sie einfach als "gleich" betrachtet und kein Tausch ist erforderlich).

Sie haben jetzt erfolgreich den Fall getestet, in dem benachbarte Elemente gleich sind, und unsere Untersuchung des Vergleichs zweier benachbarter Zahlen für Sortierzwecke abgeschlossen.

Zusammenfassung

In diesem Lab haben wir zunächst das grundlegende Konzept des Vergleichs benachbarter Elemente untersucht, ein Kernkonzept in Sortieralgorithmen. Wir haben gelernt, wie man ein einfaches Java-Programm erstellt, um zwei Zahlen zu vergleichen und zu bestimmen, ob die eine größer als, kleiner als oder gleich der anderen ist. Dies beinhaltete das Verständnis der grundlegenden Java-Syntax für die Deklaration und Zuweisung von Variablen sowie bedingte Anweisungen (if, else if, else). Wir haben auch das Ändern bestehender Java-Dateien geübt und gelernt, wie wichtig es ist, den Klassennamen mit dem Dateinamen übereinzustimmen.

Basierend auf dem Konzept des Vergleichs benachbarter Elemente haben wir dann unser Verständnis erweitert, um sowohl aufsteigende als auch absteigende Reihenfolge in einer Zahlenfolge zu prüfen. Dies beinhaltete die iterative Anwendung der Vergleichslogik auf mehrere Elemente. Schließlich haben wir das Szenario der Behandlung gleicher Elemente während der Sortierprüfung angesprochen, um sicherzustellen, dass unsere Logik korrekt auf Fälle reagiert, in denen benachbarte Elemente denselben Wert haben. Diese Schritte haben ein grundlegendes Verständnis dafür vermittelt, wie man programmgesteuert feststellt, ob ein Array in Java sortiert ist.