Annak ellenőrzése, hogy a tömb rendezve van-e Java-ban
1. Áttekintés
Ebben az oktatóanyagban különféle módokat fogunk megnézni annak ellenőrzésére, hogy egy tömb rendezve van-e.
Mielőtt elkezdené, érdekes lenne megvizsgálni, hogyan rendezhetők tömbök a Java-ban.
2. Hurokkal
Az ellenőrzés egyik módja a mert hurok. Tudunk iterálja a tömb összes értékét egyenként.
Nézzük meg, hogyan kell csinálni.
2.1. Primitív tömb
Egyszerűen fogalmazva: az összes pozíciót iteráljuk, az utolsó kivételével. Ez azért van, mert összehasonlítani fogjuk az egyik pozíciót a következővel.
Ha némelyiket nem rendezik, akkor a módszer visszatér hamis. Ha egyik összehasonlítás sem tér vissza hamis, ez azt jelenti, hogy egy tömb rendezve van:
logikai isSorted (int [] tömb) {for (int i = 0; i tömb [i + 1]) hamis értéket ad vissza; } return true; }
2.2. A megvalósítandó objektumok Hasonló
Valami hasonlót tehetünk a megvalósító objektumokkal Hasonló. Ahelyett, hogy nagyobb, mint előjelet használna, használjuk összehasonlítani:
logikai isSorted (Összehasonlítható [] tömb) {for (int i = 0; i 0) hamis értéket ad vissza; } return true; }
2.3. Objektumok, amelyek nem valósulnak meg Hasonló
De mi van, ha objektumaink nem valósulnak meg Hasonló? Ebben az esetben tehetünk helyette hozzon létre egy Összehasonlító.
Ebben a példában a Munkavállaló tárgy. Ez egy egyszerű POJO, három mezővel:
public class Alkalmazott megvalósítja a Serializable {private int id; privát karakterlánc neve; privát int kor; // szerelők és beállítók}
Ezután meg kell választanunk, hogy melyik mezőt szeretnénk megrendelni. Itt rendeljünk a kor terület:
Comparator byAge = Comparator.comparingInt (Employee :: getAge);
És akkor megváltoztathatjuk a módszerünket, hogy a Összehasonlító:
logikai isSorted (Object [] tömb, Comparator Comparator) {for (int i = 0; i 0) hamis értéket ad vissza; } return true; }
3. Rekurzív módon
Természetesen használhatunk rekurziót is. Az ötlet az, hogy ellenőrizzük a tömb két pozícióját, majd ismétlődünk, amíg minden pozíciót meg nem ellenőrizünk.
3.1. Primitív tömb
Ebben a módszerben ellenőrizzük az utolsó két pozíciót. Ha rendezik őket, akkor újra meghívjuk a módszert, de egy korábbi pozícióval. Ha ezen pozíciók egyikét nem rendezi, akkor a módszer visszatér hamis:
logikai isSorted (int [] tömb, int hossz) hosszúság tömb [hossz - 1]) visszaadja hamis; return isSorted (tömb, hossz - 1);
3.2. A megvalósítandó objektumok Hasonló
Most nézzük megint azokat az objektumokat, amelyek megvalósulnak Hasonló. Meglátjuk ugyanezt a megközelítést összehasonlítani működni fog:
logikai isSorted (Összehasonlítható [] tömb, int hossz)
3.3. Olyan objektumok, amelyek nem valósulnak meg Hasonló
Az utóbbi időben próbáljuk ki Munkavállaló újból objektum, hozzáadva a Összehasonlító paraméter:
logikai isSorted (Object [] tömb, Comparator összehasonlító, int hossz) if (tömb == null
4. Következtetés
Ebben az oktatóanyagban láthattuk, hogyan lehet ellenőrizni, hogy egy tömb rendezve van-e vagy sem. Iteratív és rekurzív megoldásokat egyaránt láttunk.
Javaslatunk a loop megoldás használata. Tisztább és könnyebben olvasható.
Szokás szerint az oktatóanyag forráskódja megtalálható a GitHubon.