Controleren of een array in Java is gesorteerd

1. Overzicht

In deze zelfstudie zien we verschillende manieren om te controleren of een array is gesorteerd.

Voordat u begint, zou het echter interessant zijn om te controleren hoe u arrays in Java sorteert.

2. Met een lus

Een manier om dit te controleren is met een voor lus. Wij kunnen herhaal alle waarden van de array één voor één.

Laten we eens kijken hoe we het moeten doen.

2.1. Primitieve array

Simpel gezegd, we zullen alle posities herhalen, behalve de laatste. Dit komt omdat we de ene positie met de volgende gaan vergelijken.

Als sommige niet zijn gesorteerd, keert de methode terug false. Als geen van de vergelijkingen terugkeert vals, het betekent dat een array is gesorteerd:

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

2.2. Objecten die implementeren Vergelijkbaar

We kunnen iets soortgelijks doen met objecten die implementeren Vergelijkbaar. In plaats van een groter-dan-teken te gebruiken, we zullen gebruiken vergelijk met:

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

2.3. Objecten die niet worden geïmplementeerd Vergelijkbaar

Maar wat als onze objecten niet worden geïmplementeerd? Vergelijkbaar? In dit geval kunnen we in plaats daarvan Maak een Comparator.

In dit voorbeeld gaan we de Werknemer voorwerp. Het is een eenvoudige POJO met drie velden:

public class Werknemer implementeert Serializable {private int id; private String naam; privé int leeftijd; // getters en setters}

Vervolgens moeten we kiezen op welk veld we willen sorteren. Laten we hier bestellen bij de leeftijd veld:

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

En dan kunnen we onze methode veranderen om ook een Comparator:

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

3. Recursief

We kunnen in plaats daarvan natuurlijk recursie gebruiken. Het idee hier is dat we twee posities in de array controleren en dan recursief totdat we elke positie hebben gecontroleerd.

3.1. Primitieve array

Bij deze methode we controleren de laatste twee posities. Als ze zijn gesorteerd, bellen we de methode opnieuw, maar met een vorige positie. Als een van deze posities niet is gesorteerd, keert de methode terug vals:

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

3.2. Objecten die implementeren Vergelijkbaar

Laten we nu opnieuw kijken naar objecten die implementeren Vergelijkbaar. We zullen zien dat dezelfde aanpak met vergelijk met zal werken:

boolean isSorted (Comparable [] array, int length) 

3.3. Objecten die niet worden geïmplementeerd Vergelijkbaar

Laten we de laatste tijd onze Werknemer object opnieuw, waarbij u het Comparator parameter:

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

4. Conclusie

In deze zelfstudie hebben we gezien hoe u kunt controleren of een array is gesorteerd of niet. We hebben zowel iteratieve als recursieve oplossingen gezien.

Onze aanbeveling is om de lusoplossing te gebruiken. Het is schoner en gemakkelijker te lezen.

Zoals gewoonlijk is de broncode van deze tutorial te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found