Überprüfen, ob ein Array in Java sortiert ist

1. Übersicht

In diesem Tutorial sehen wir verschiedene Möglichkeiten, um zu überprüfen, ob ein Array sortiert ist.

Bevor Sie beginnen, wäre es jedoch interessant zu überprüfen, wie Arrays in Java sortiert werden.

2. Mit einer Schleife

Eine Möglichkeit zur Überprüfung ist eine for- Schleife. Wir können alle Werte des Arrays einzeln durchlaufen.

Mal sehen, wie es geht.

2.1. Primitives Array

Einfach ausgedrückt, wir werden alle Positionen außer der letzten durchlaufen. Dies liegt daran, dass wir eine Position mit der nächsten vergleichen werden.

Wenn einige von ihnen nicht sortiert sind, gibt die Methode false zurück. Wenn keiner der Vergleiche false zurückgibt, bedeutet dies, dass ein Array sortiert ist:

boolean isSorted(int[] array) { for (int i = 0; i  array[i + 1]) return false; } return true; }

2.2. Objekte, die vergleichbar implementieren

Ähnliches können wir mit Objekten tun, die Comparable implementieren . Anstatt ein Größer-als-Zeichen zu verwenden, verwenden wir compareTo :

boolean isSorted(Comparable[] array) { for (int i = 0; i  0) return false; } return true; }

2.3. Objekte, die nicht vergleichbar sind

Aber was , wenn unsere Objekte nicht implementieren Vergleichbare ? In diesem Fall können wir stattdessen einen Komparator erstellen .

In diesem Beispiel verwenden wir das Employee- Objekt. Es ist ein einfaches POJO mit drei Feldern:

public class Employee implements Serializable { private int id; private String name; private int age; // getters and setters }

Dann müssen wir auswählen, nach welchem ​​Feld wir bestellen möchten. Hier wollen wir , um durch das Altersfeld:

Comparator byAge = Comparator.comparingInt(Employee::getAge);

Und dann können wir unsere Methode ändern, um auch einen Komparator zu verwenden :

boolean isSorted(Object[] array, Comparator comparator) { for (int i = 0; i  0) return false; } return true; }

3. Rekursiv

Wir können natürlich stattdessen die Rekursion verwenden. Die Idee hier ist, dass wir zwei Positionen im Array überprüfen und dann wiederholen, bis wir jede Position überprüft haben.

3.1. Primitives Array

Bei dieser Methode überprüfen wir die letzten beiden Positionen. Wenn sie sortiert sind, rufen wir die Methode erneut auf, jedoch mit einer vorherigen Position. Wenn eine dieser Positionen nicht sortiert ist, gibt die Methode false zurück:

boolean isSorted(int[] array, int length)  length  array[length - 1]) return false; return isSorted(array, length - 1); 

3.2. Objekte, die vergleichbar implementieren

Betrachten wir nun noch einmal Objekte, die Comparable implementieren . Wir werden sehen, dass der gleiche Ansatz mit compareTo funktioniert:

boolean isSorted(Comparable[] array, int length) 

3.3. Objekte, die nicht vergleichbar sind

Versuchen wir in letzter Zeit unser Employee- Objekt erneut und fügen den Comparator- Parameter hinzu:

boolean isSorted(Object[] array, Comparator comparator, int length)  if (array == null 

4. Fazit

In diesem Tutorial haben wir gesehen, wie Sie überprüfen, ob ein Array sortiert ist oder nicht. Wir haben sowohl iterative als auch rekursive Lösungen gesehen.

Wir empfehlen die Verwendung der Loop-Lösung. Es ist sauberer und leichter zu lesen.

Wie üblich finden Sie den Quellcode aus diesem Tutorial auf GitHub.