Seringkali suatu data harus diurutkan terlebih dahulu sebelum melanjutkan ke proses berikutnya. Di pemrograman komputer, pengurutan (sorting) adalah salah satu operasi penting dalam sebuah aplikasi komputer. Anda tentu tahu bagaimana mengurutkan data-data di aplikasi Microsoft Excel. Sekarang ini, telah banyak program aplikasi yang dibuat untuk memiliki kemampuan mengurutkan data.

Banyak algoritma berbeda dikembangkan untuk menemukan cara efektif dan efisien dalam mengurutkan data. Karena pengurutan data merupakan operasi umum yang sering digunakan, Java sudah menyediakan metoda untuk mengurutkan data yang tersimpan di sebuah larik. Metoda tersebut adalah sort dari kelas Arrays yang terletak di paket java.util. Metode short kelas Arrays digunakan untuk mengurutkan data tipe short, int, long, float, double dan char. Berikut ini adalah contoh program untuk mengurutkan data tipe int dan char yang tersimpan di larik.

// Nama file : MengurutkanElemen.java
// Mengurutkan elemen dengan metoda sort dari kelas Arrays

// Mengimpor kelas Java
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import java.util.Arrays;

// Deklarasi kelas
public class MengurutkanElemen {

   // Metoda main
   public static void main(String[] args) {

      int[] nilaiInteger = {3,2,6,4,8,7,9,1,5,10};
      char[] nilaiKarakter = {'d', 'c', 'g', 'f', 'i', 'a', 'b', 'h', 'e'};

      String tampilan;
      JTextArea areaTampilan;

      // Menampilkan elemen larik integer
      tampilan = "Menampilkan elemen larik integer :\n";
      for (int x = 0; x < nilaiInteger.length; x++)
         tampilan += nilaiInteger[x] + "   ";

      Arrays.sort(nilaiInteger);

      // Menampilkan elemen larik integer setelah diurutkan
      tampilan += "\nMenampilkan elemen larik integer setelah diurutkan :\n";
      for (int x = 0; x < nilaiInteger.length; x++)
         tampilan += nilaiInteger[x] + "   ";

      // Menampilkan elemen larik karakter
      tampilan += "\n\nMenampilkan elemen larik karakter :\n";
      for (int x = 0; x < nilaiKarakter.length; x++)
         tampilan += nilaiKarakter[x] + "   ";

      Arrays.sort(nilaiKarakter);

      // Menampilkan elemen larik karakter setelah diurutkan
      tampilan += "\nMenampilkan elemen larik karakter setelah diurutkan :\n";
      for (int x = 0; x < nilaiKarakter.length; x++)
         tampilan += nilaiKarakter[x] + "   ";

      areaTampilan = new JTextArea();
      areaTampilan.setText(tampilan);
      JOptionPane.showMessageDialog(null, areaTampilan, "Mengurutkan Elemen Larik",
         JOptionPane.INFORMATION_MESSAGE);

      // Mengakhiri aplikasi
      System.exit(0);
   }
}

Baris nomor 15 dan 16 adalah deklarasi, membuat dan menginisialisi larik nilaiInteger dan nilaiKarakter. Baris nomor 23 adalah perulangan for untuk menampilkan nilai elemen larik nilaiInteger. Di setiap iterasi perulangan for, pernyataan baris nomor 24 dieksekusi yaitu menyimpan elemen larik larikInteger ke variabel tampilan. Baris nomor 26 adalah pernyataan untuk mengurutkan nilai elemen larik nilaiInteger menggunakan metoda sort dari kelas Arrays. Metode sort memerlukan argumen larik yang elemennya akan diurutkan. Setelah diurutkan, nilai elemen kemudian ditampilkan (baris nomor 30–31).

Baris nomor 35 adalah perulangan for untuk menampilkan nilai elemen larik nilaiKarakter. Di setiap iterasi perulangan for, pernyataan baris nomor 36 dieksekusi yaitu menyimpan elemen larik larikKarakter di variabel tampilan. Baris nomor 38 adalah pernyataan untuk mengurutkan nilai elemen larik nilaiKarakter menggunakan metoda sort dari kelas Arrays. Metode sort memerlukan argumen larik yang elemennya akan diurutkan. Setelah diurutkan, nilai elemen kemudian ditampilkan (baris nomor 42–43).

Mengurutkan elemen larik di Java

Selain menggunakan metode sort dari kelas Arrays, Anda juga dapat membuat metoda sendiri untuk mengurutkan elemen larik. Berikut ini adalah deklarasi dua metoda yaitu mengurutkanElemen dan menukar yang akan digunakan untuk mengurutkan elemen larik tipe int. Di dalam mengurutkan elemen larik, metode mengurutkanElemen akan memanggil metoda menukar.

// Deklarasi metoda mengurutkanElement
public static void mengurutkanElemen(int[] larikA) {
   for(int x = larikA.length – 1; x >= 1 x--) {
      for(int j = 0; j <= x; j++) {
         if (larik[j] > larik[x])
            menukar(larikA, j, x)
      }
   }
}

// Deklarasi metoda menukar
public static void menukar(int[] lariB, int indekj, int indekx) {
   int sementara;
   sementara = larikB[indekx];
   larikB[indekx] = larikB[indekj];
   larikB[indekj] = sementara;
}

Berikut ini adalah contoh program mengurutkan data tipe int yang tersimpan di larik larikInt menggunakan metoda mengurutkanElemen dan menukar yang telah dideklarasikan sebelumnya. Kedua metoda tersebut hanya dapat digunakan untuk mengurutkan elemen larik tipe int.

// Nama file : MengurutkanElemen2.java
// Mengunakan metoda yang dideklarasikan sendiri

// Deklarasi kelas
public class MengurutkanElemen2 {

   // Metoda main
   public static void main(String[] args) {
   
      int[] larikInt = {5, 3, 7, 9, 8, 6, 2, 1, 4};

      // Menampilakan elemen larik sesuai urutan aslinya
      System.out.println("\nElemen larik sesuai urutan aslinya :");
      for (int x = 0; x < larikInt.length; x++)
         System.out.print(larikInt[x] + "  ");

      // Mengurutkan larik
      mengurutkanElemen(larikInt);

      // Menampilkan elemen larik setelah diurutkan
      System.out.println("\n\nElemen larik setelah diurutkan :");
      for (int x = 0; x < larikInt.length; x++)
         System.out.print(larikInt[x] + "  ");

      // Menambah spasi baris kosong
      System.out.println();
   
   } // Akhir blok metoda main

   // Metoda mengurutkanElemen
   public static void mengurutkanElemen(int[] larikA) {
      for (int x = larikA.length - 1; x >= 1; x--) {
         for (int j = 0; j <= x; j++) {
            if (larikA[j] > larikA[x])
               menukar(larikA, j, x);
         }
      }
   }

   // metoda menukar
   public static void menukar(int[] larikB, int indekj, int indekx) {
      int sementara;

      sementara = larikB[indekx];
      larikB[indekx] = larikB[indekj];
      larikB[indekj] = sementara;
   }

} // Akhir blok kelas

Mengurutkan elemen larik di Java

Kode program di atas adalah implementasi metoda mengurutkanElemen dan menukar yang telah dideklarasikan sebelumnya. Baris nomor 10 adalah pernyataan untuk mendeklarasikan, membuat dan menginisialisi larik nilaiInt, Perulangan for baris nomor 14–15 akan menampilkan elemen larik nilaiInt dengan urutan sesuai aslinya. Baris nomor 18 adalah pernyataan untuk memanggil metoda mengurutkanElemen.

Metoda mengurutkanElemen memerlukan argumen berupa larik yang mempunyai elemen tipe int. Di blok metoda mengurutkanElemen terdapat perulangan tersarang for dan penyeleksian if. Perulangan for bagian luar mendeklarasikan variabel kontrol x dengan nilai awal larikA.length - 1. Di setiap iterasi perulangan for ini, nilai variabel kontrol x akan dikurangi dengan 1 (x--). Iterasi perulangan for akan berhenti apabila nilai x >= 1 tidak terpenuhi.

Perulangan for bagian dalam mendeklarasikan variabel kontrol j dengan nilai awal 0. Di setiap iterasi perulangan for bagian dalam, variabel kontrol j ditambah dengan 1. Perulangan for bagian dalam ini melakukan proses iterasi selama nilai j < x. Saat iterasi perulangan for berlangsung, nilai larikA dengan indek j (larikA[j]) akan dibandingkan dengan nilai dari larikA dengan indek x (larikA[x]). Apabila nilai elemen larikA lebih besar (larikA[j] > larikA[x]), metoda mengurutkanElemen akan memanggil metode menukar. Metode menukar digunakan untuk menukar posisi elemen larikA. Nilai elemen larikA dengan indek j disimpan ke larikA dengan indek x dan sebaliknya, nilai elemen larikA dengan indek x disimpan ke larikA dengan indek j.

Setelah proses iterasi perulangan for bagian luar selesai, alir kontrol program menuju ke metoda main. Proses eksekusi kemudian berlanjut ke baris nomor 21-23 untuk menampilkan nilai elemen larikA yang sudah diurutkan. Untuk bisa mengurutkan elemen larik tipe berbeda, Anda dapat membuat overloading method untuk kedua metoda dengan parameter larik yang elemennya dapat berasal dari tipe short, long, fload, double atau char.