Banner Java

Mengurutkan (Sorting) Nilai Elemen Larik (Array)

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 telah dikembangkan untuk menemukan cara paling 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 dapat 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 masing-masing 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

Selain menggunakan metode sort dari kelas Arrays, Anda 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 untuk 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

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.

Baca artikel terkait lainnya:

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.