Kontrola, či je pole zoradené v prostredí Java

1. Prehľad

V tomto tutoriáli uvidíme rôzne spôsoby, ako skontrolovať, či je pole zoradené.

Pred začatím by však bolo zaujímavé skontrolovať, ako zoradiť polia v Jave.

2. So slučkou

Jedným zo spôsobov kontroly je a pre slučka. Môžeme iterovať všetky hodnoty poľa jednu po druhej.

Pozrime sa, ako na to.

2.1. Primitívne pole

Jednoducho povedané, budeme iterovať na všetkých pozíciách okrem tej poslednej. Je to preto, že budeme porovnávať jednu pozíciu s ďalšou.

Ak niektoré z nich nie sú zoradené, metóda sa vráti nepravdivé. Ak sa nevráti žiadne z porovnaní nepravda, to znamená, že pole je zoradené:

boolean isSorted (int [] pole) {for (int i = 0; i pole [i + 1]) return false; } návrat pravdivý; }

2.2. Objekty, ktoré sa implementujú Porovnateľné

Niečo podobné môžeme urobiť s objektmi, ktoré implementujú Porovnateľné. Namiesto použitia znaku viac ako použijeme porovnať s:

boolean isSorted (Comparable [] array) {for (int i = 0; i 0) return false; } návrat pravdivý; }

2.3. Objekty, ktoré sa neimplementujú Porovnateľné

Čo však v prípade, že sa naše objekty neimplementujú Porovnateľné? V takom prípade môžeme namiesto toho Vytvor Komparátor.

V tomto príklade použijeme Zamestnanec objekt. Je to jednoduché POJO s tromi poľami:

public class Zamestnanec implementuje Serializable {private int id; súkromné ​​meno reťazca; súkromný int vek; // zakladatelia a zakladatelia}

Potom si musíme zvoliť, do ktorého poľa sa chceme zoradiť. Tu si objednajme podľa Vek lúka:

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

A potom môžeme zmeniť našu metódu, aby sme použili aj a Komparátor:

boolean isSorted (Object [] array, Comparator comparator) {for (int i = 0; i 0) return false; } návrat pravdivý; }

3. Rekurzívne

Namiesto toho samozrejme môžeme použiť rekurziu. Myšlienkou je, že skontrolujeme dve pozície v poli a potom ich budeme opakovať, kým nezkontrolujeme všetky pozície.

3.1. Primitívne pole

Pri tejto metóde skontrolujeme posledné dve polohy. Ak sú zoradené, zavoláme metódu znova, ale s predchádzajúcou pozíciou. Ak jedna z týchto pozícií nie je zoradená, metóda sa vráti nepravda:

boolean isSorted (int [] pole, int dĺžka) dĺžka poľa [dĺžka - 1]) return false; return isSorted (pole, dĺžka - 1); 

3.2. Objekty, ktoré sa implementujú Porovnateľné

Teraz sa pozrime znova na objekty, ktoré sa implementujú Porovnateľné. Uvidíme, že rovnaký prístup bude porovnať s bude pracovať:

boolean isSorted (porovnateľné pole [], dĺžka int) 

3.3. Objekty, ktoré sa neimplementujú Porovnateľné

V poslednej dobe skúsme naše Zamestnanec objekt znova pridaním Komparátor parameter:

boolean isSorted (Object [] pole, komparátor komparátor, int dĺžka) if (pole == null 

4. Záver

V tomto tutoriáli sme videli, ako skontrolovať, či je pole zoradené alebo nie. Videli sme iteratívne aj rekurzívne riešenia.

Naše odporúčanie je použiť riešenie slučky. Je to čistejšie a ľahšie sa číta.

Ako obvykle, zdrojový kód z tohto tutoriálu nájdete na GitHub.


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