Memeriksa Jika Array Disortir di Jawa

1. Ikhtisar

Dalam tutorial ini, kita akan melihat berbagai cara untuk memeriksa apakah sebuah array diurutkan.

Namun, sebelum memulai, akan menarik untuk memeriksa cara mengurutkan array di Java.

2. Dengan Loop

Salah satu cara untuk memeriksanya adalah dengan for loop. Kita bisa mengulang semua nilai array satu per satu.

Mari kita lihat bagaimana melakukannya.

2.1. Array Primitif

Sederhananya, kami akan mengulangi semua posisi kecuali yang terakhir. Ini karena kita akan membandingkan satu posisi dengan yang berikutnya.

Jika beberapa di antaranya tidak diurutkan, metode ini akan mengembalikan nilai salah. Jika tidak ada perbandingan yang mengembalikan false, itu berarti array diurutkan:

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

2.2. Objek Yang Diimplementasikan Sebanding

Kita bisa melakukan hal serupa dengan objek yang mengimplementasikan Comparable. Alih-alih menggunakan tanda lebih besar dari, kami akan menggunakan bandingkanTo :

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

2.3. Objek yang Tidak Dapat Diimplementasikan Sebanding

Tapi, bagaimana jika objek kita tidak mengimplementasikan Comparable ? Dalam hal ini, kita bisa membuat Pembanding.

Dalam contoh ini, kita akan menggunakan objek Employee . Ini adalah POJO sederhana dengan tiga bidang:

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

Kemudian, kita perlu memilih field mana yang ingin kita pesan. Di sini, mari kita urutkan berdasarkan bidang usia :

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

Dan kemudian, kami dapat mengubah metode kami untuk juga menggunakan Comparator :

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

3. Secara rekursif

Kita bisa, tentu saja, menggunakan rekursi. Idenya di sini adalah kita akan memeriksa dua posisi dalam array dan kemudian mengulang sampai kita memeriksa setiap posisi.

3.1. Array Primitif

Dalam metode ini, kami memeriksa dua posisi terakhir. Jika sudah diurutkan, kita akan memanggil metode itu lagi tetapi dengan posisi sebelumnya. Jika salah satu dari posisi ini tidak diurutkan, metode ini akan mengembalikan false:

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

3.2. Objek Yang Diimplementasikan Sebanding

Sekarang, mari kita lihat lagi sebagai objek yang mengimplementasikan Comparable. Kita akan melihat bahwa pendekatan yang sama dengan bandingkanTo akan berhasil:

boolean isSorted(Comparable[] array, int length) 

3.3. Objek yang Tidak Dapat Diimplementasikan Sebanding

Akhir-akhir ini, mari coba objek Employee kita lagi, dengan menambahkan parameter Comparator :

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

4. Kesimpulan

Dalam tutorial ini, kita telah melihat bagaimana memeriksa apakah sebuah array diurutkan atau tidak. Kami melihat solusi iteratif dan rekursif.

Rekomendasi kami adalah menggunakan solusi loop. Lebih bersih dan lebih mudah dibaca.

Seperti biasa, kode sumber dari tutorial ini dapat ditemukan di GitHub.