Algoritma Sorting : Selection Sort

Selection sort adalah algoritma untuk sorting samaseperti halnya dengan Insertion sort yang simpel, namun tidak efisien.

Pada perulangan pertama, metode ini akan memilih elemen terkecil dari array, kemudian menukarnya dengan elemen pertama. Selanjutnya pada perulangan kedua, akan memilih nilai terkecil kedua (atau elemen dengan nilai terkecil diantara seluruh elemen yang tersisa), dan kemudian menukarnya dengan elemen yang kedua.


selection sort

Algoritma akan terus berlanjut sampai perulangan terakhir memilih elemen dengan nilai terbesar kedua, kemudian menukarnya dengan index terakhir kedua, sehingga meninggalkan elemen terbesar di index terakhir. Setelah perulangan ke-i, maka elemen i terkecil dari array akan diurutkan dengan urutan meningkat dalam elemen pertama i dari array.

Sebagai contoh perhatikan array di bawah ini:

22 34 18 10 42 56 68 29 77 56

Maka program pertama-tama akan menetapkan elemen terkecil dari array terlebih dahulu, dalam hal ini yaitu angka10 yang berada di index 4. Kemudian akan ditukar dengan angka 22, sehingga menghasilkan:

10 34 18 22 42 56 68 29 77 56

Kemudian dari hasil pertukaran tersebut, program akan menyeleksi lagi nilai terkecil dari elemen yang tersisa yaitu kecuali angka 10. Hasil dari seleksi tersebut adalah angka 18 yang terdapat di index 2. Kemudian program akan menukar angka 18 dengan 34, sehingga menghasilkan:

10 18 34 22 42 56 68 29 77 56

Program akan terus melakukan sistem perulangan tersebut sampai dengan seluruh elemen array berurut.

Contoh:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class SelectionSort {
 
 public static void selectionSort (int [] myList){
  
  for (int i = 0; i < myList.length - 1; i++){
   int nilaiMinimum = myList[i];
   int indexNilaiMinimum = i;
   
   for(int j = i + 1; j < myList.length; j++){
    if(nilaiMinimum > myList[j]){
     nilaiMinimum = myList[j];
     indexNilaiMinimum = j;
    }
   }
   
   if(indexNilaiMinimum != i){
    myList[indexNilaiMinimum] = myList [i];
    myList[i] = nilaiMinimum;
   }
  }
  
 }
 
 public static void main(String args []){
  
  int myArray [] = {22, 34, 18, 10, 42, 56, 68, 29, 77, 56};
  SelectionSort.selectionSort(myArray);
  
  //Menampilkan array
  for (int i = 0; i < myArray.length; i++){
    System.out.print(myArray[i] + " ");
  }
    
  
 }

}

Output:
10 18 22 29 34 42 56 56 68 77

Pencarian Binary Pada Array

Seperti halnya pada linear search, maka binary search juga adalah metode yang umum untuk dilakukan terhadap pencarian nilai spesifik pada suatu list.

Penting untuk diketahui, sebelum menggunakan metode ini, maka elemen pada array haruslah sudah diurutkan terlebih dahulu. Diasumsikan diurutkan dengan nilai dari rendah ke tinggi, maka binary search pertama-tama akan membandingkan key atau target dengan elemen yang terletak di tengah array.

Oleh karena itu, anda bisa mempertimbangkan 3 kasus yang mungkin terjadi:
  • Jika key kurang dari elemen tengah, maka anda hanya perlu mencari key hanya untuk setengah bagian pertama dari array.
  • Jika key adalah elemen tengah, maka pencarian langsung berakhir atau target langsung ditemukan.
  • Jika key lebh besar dari elemen tengah, maka anda hanya perlu melanjutkan pencarian untuk key hanya untuk setengah bagian kedua dari array.
Intinya, pencarian dengan metode binary ini akan menghilangkan sekurang-kurangnya setengah dari array setelah setiap perbandingan.

Contoh:
key = 26

binary seach
binary search
Pada contoh di atas anda lihat bahwa target atau key yang dicari adalah nilai 26, dan data sudah diurutkan terlebih dahulu. Binary bekerja dengan memberikan nilai bawah, nilai tengah dan nilai atas dari array tersebut, kemudian setelah setiap perbandingan, porsi pencarian terus berkurang setengahnya, sampai dengan nilai key ditemukan.

Jika jumlah elemen array adalah z, maka setiap setelah perbandingan, akan menjadi z/2 elemen tersisa yang akan digunakan dalam pencarian, kemudian setelah perbandingan kedua, akan menjadi (z/2)/2 elemen tersisa yang digunakan dalam pencarian. Maka setelah y kali perbandingan , maka akan tersisa z/2y.

Setelah anda mengetahui dan memahami cara kerja binary search, jangan langsung terburu-buru untuk memberikan implementasi lengkap. Implementasi dilakukan secara bertahap. Anda bisa saja memulainya dengan perulangan pertama pada pencarian seperti pada gambar di atas.

Pada gambar diatas, key dibandingkan dengan nilai tengah pada list, dimana index bawah adalah 0 dan index atas adalah list.length - 1. Jika key < list[tengah], maka set index atas ke tengah - 1; jika key == list[tengah], maka key ditemukan dan kembalikan nilai tengah; jika key > list[atas], maka set index bawah ke tengah + 1.

Setelah itu barulah pertimbangkan untuk menggunakan loop untuk mengimplementasikan method. Pencarian berakhir bila key ditemukan atau jika key tidak ditemukan bila bawah > atas.

Contoh:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Binary {
 
 public static int pencarianBinary(int[] list, int key) {
  
   int bawah = 0;
   int atas = list.length - 1;
   
   while (atas >= bawah) {
    int tengah = (bawah + atas) / 2;
    if (key < list[tengah])
     atas = tengah - 1;
    else if (key == list[tengah])
     return tengah;
    else
     bawah = tengah + 1;
    }
   return -1; // Not found
 }
 
 public static void main(String args []){
  
  int myArray [] = {5, 8, 12, 15, 17, 23, 26, 30, 34, 38, 42, 54, 64, 78, 81};
  int key1 = 26;
  int key2 = 78;
  int key3 = 8;
  int key4 = 39;
  int i = Binary.pencarianBinary(myArray, key1);
  int j = Binary.pencarianBinary(myArray, key2);
  int k = Binary.pencarianBinary(myArray, key3);
  int l = Binary.pencarianBinary(myArray, key4);
  
  System.out.println("Key " + key1 + " index " + i );
  System.out.println("Key " + key2 + " index " + j );
  System.out.println("Key " + key3 + " index " + k );
  System.out.println("Key " + key4 + " index " + l );
 }

}

Output:
Key 26 index 6
Key 78 index 13
Key 8 index 1
Key 39 index -1

Nilai 39 tidak terdapat pada myArray, oleh karena itu mengembalikan nilai -1.

Kesimpulan:

Dalam array dengan jumlah elemen yang besar, binary search akan lebih cepat dan efektif dalam melakukan pencarian key jika dibandingkan dengan linear search.

Pencarian Linear Pada Array

Pencarian atau searching adalah proses untuk menemukan elemen yang spesifik di dalam suatu array, dan ini adalah hal yang umum dilakukan pada proses pemrograman.

Berbeda dengan pencarian secara binary, pencarian secara linear merupakan suatu metode untuk menemukan elemen tertentu di dalam suatu list, dengan memeriksa satu persatu setiap elemen, pada satu waktu dan secara berurutan sampai dengan target ditemukan.

linear search


Cara ini merupakan yang paling simpel untuk algoritma pencarian. Untuk array dengan jumlah elemen sebanyak Z, maka kasus terbaik adalah jika nilai yang dicari merupakan elemen pertama, karena hanya memerlukan satu kali saja perbandingan diperlukan.

Sedangkan kasus terburuk yaitu bila nilai yang dicari tidak berada di dalam list atau hanya ada pada akhir dari list, yang berarti memerlukan perbandingan dengan jumlah Z kali untuk menemukan elemen tersebut.

Proses linear search tidak memerlukan pengurutan data terlebih dahulu.

Skenario kinerja terburuk dari pencarian secara linear adalah keharusan untuk melakukan loop terhadap keseluruhan collection, walaupun target yang dicari adalah elemen terakhir ataupun tidak ditemukan di dalam list.

Dengan kata lain, jika anda memiliki sejumlah Z elemen di dalam array, maka skenario terburuknya adalah perulangan akan dilakukan sebanyak Z kali.

Contoh linear search:


public class MetodeLinear {
 
    public static int pencarianLinear(int[] myArray, int myKey){
        
        int size = myArray.length;
        for(int i=0;i<size;i++){
            if(myArray[i] == myKey){
                return i;
            }
        }
        return -1;//jika elemen tidak ditemukan, maka akan nilai -1 akan 
                  //dikembalikan

    }
    
    public static void main(String a[]){
        
        int[] array1= {67, 89, 54, 23, 36, 60, 65, 89, 52, 43};
        int target = 60;
        
        System.out.println("Target "+ target + " ditemukan pada index: "
        + pencarianLinear(array1, target));
        
        int[] array2= {2009, 1879, 2563, 1986, 1790, 1135, 1345, 1197};
        target = 1879;
        
        System.out.println("Target "+ target + " ditemukan pada index: "
        +pencarianLinear(array2, target));
    }
}


Output:
Target 60 ditemukan pada index: 5
Target 1879 ditemukan pada index: 1

Terus bagaimana bila pada array terdapat nilai yang sama atau duplikat?, misalnya:

Nilai target yang dicari adalah 60, dan akan dicari dalam array dengan list elemen 87, 65, 43, 60, 55, 32, 60. Maka nilai array pada index pertama yang akan dikembalikan, dalam hal ini adalah nilai 60 pada index ke 3.

Variable-Length Argument List Pada Java

Method dapat memiliki Variable-Length Argument List dan ini telah hadir sejak Java 5.0, yang disebut juga dengan varargs.  Parameter varargs ini dapat berupa tipe primitif ataupun objek. Tanda (...) digunakan pada argument list dari method signature.

Kenapa varargs diperkenalkan? Karena sebelumnya programmer menggunakan method overloaded atau mengambil parameter method sebagai suatu array, namun nyatanya hal ini bukanlah sesuatu yang baik sehubungan pada penyelesaian masalah pada program.  

Jika banyaknya argument yang akan di-pass kan pada method tidak diketahui, maka penggunaan varargs adalah keputusan yang lebih baik.
Apa keuntungan penggunaan varargs? Keuntungannya adalah dapat mengurangi penggunaan kode karena tidak memerlukan overloaded pada method.

varargs


Syntax-nya adalah:

return_type method_name(data_type... variableName){}

Variabel angka dari argumen dengan tipe yang sama dapat dipass-kan pada suatu method dan diperlakukan sebagai array.

Dalam mendeklarasikan method, anda menentukan tipe method yang akan digunakan, kemudian diikuti dengan tanda (...). Hanya satu  Variable-Length Argument List yang dapat ditetapkan dalam suatu method, dan parameter ini haruslah parameter terakhir. Jadi parameter biasa lainnya harus diletakkan lebih awal.

Java memperlakukan parameter variable-length sebagai suatu array. Anda dapat melewatkan / pass suatu array ataupun argumen variabel angka  pada parameter variable-length. Ketika memanggil method dengan argumen variabel angka, maka Java membuat array dan melewatkan argument tersebut ke dalamnya.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public class ContohVarargs {
 
  static void tampilkan (String...value){
  
  System.out.println("Method tampilkan dipanggil: ");
  
 }
 
  
  public static void main(String args []){
   
   tampilkan();
   tampilkan("selamat", " datang ", " di pemrograman ", " Java");
  }
 

}

Output:
Method tampilkan dipanggil:
Method tampilkan dipanggil:

Lho, kenapa string selamat datang di pemrograman Java tidak ditampilkan?

Ingat bahwa Java memperlakukan parameter variable-length sebagai suatu array, maka untuk menampilkan elemen array, maka biasanya menggunakan pernyataan loop.

Contoh:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class ContohVarargs {
 
  static void tampilkan (String...myString){
  
  System.out.println("Method tampilkan dipanggil: ");
  
  for(String string :myString){  
      System.out.print(string);  
     }  
  
 }
 
  
  public static void main(String args []){
   
   tampilkan();
   tampilkan("Selamat", " datang ", " di pemrograman ", " Java");
  }
 

}

Output:
Method tampilkan dipanggil:
Method tampilkan dipanggil:
Selamat datang  di pemrograman  Java

Kode berikut ini akan memberikan compile error, karena tidak sesuai dengan aturan untuk varargs:
  1. void method(String... x, int... y){}//Error karena hanya boleh ada satu varargs yang ditetapkan 
  2. void method(int... y, String x){}//Error karena varargs harus diletakkan paling akhir setelah variabel biasa

Contoh lainnya, penggunaan varargs dan parameter biasa:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ContohVarargs {
 public static void main(String[] args) {
  
  angkaMinimum("Angka minimum adalah ", 0.19, 0.12, 0.08, 0.17, 0.16);
  
  }
 
 public static void angkaMinimum(String a, double... angka) {
  
  if (angka.length == 0) {
   System.out.println("Tidak ada argumen yang di lewatkan");
   return;//untuk menghentikan method
  }

  double hasil = angka[0];
  
  for (int i = 1; i < angka.length; i++)
   if (angka[i] < hasil)
    hasil = angka[i];
  
  System.out.println(a + hasil);
 }
 }

Output:
Angka minimum adalah 0.08

Menghitung Jumlah Tiap Elemen Yang Sama Dalam Array

Halo gan, setelah mengetahui mengenai method dan array, kali ini adalah mengenai program yang bertujuan untuk menghitung kemunculan setiap karakter yang sama dalam suatu array, baik array itu untuk digit angka, huruf kecil ataupun huruf besar.

Bila sudah mengetahui tentang dasar-dasar Java, cobalah terus bereksperimen dengan kode-kode sampai menjadi lebih familar dan paham dengan konsep-konsepnya. Terdapat dua class berbeda dalam program ini yaitu class KarakterAcak dan MyArray. Perhatikan juga method yang dibuat atau dimiliki oleh kelas KarakterAcak dapat digunakan di class MyArray.


Program ini bekerja dengan:
  • Meminta user memasukkan jumlah karakter dari array yang ingin dibuat
  • Meminta user untuk memasukkan jumlah karakter setiap barisnya yang akan di tampilkan
  • Membuat karakter baik untuk digit angka, huruf kecil dan huruf besar secara random dengan menggunakan method yang dibuat dari class KarakterAcak, yaitu method:
    • public static char buatKarakterDigitAngkaAcak()
    • public static char buatKarakterHurufKecilAcak()
    • public static char buatKarakterHurufBesarAcak()
  • Kemudian setiap karakter random ini dimasukkan kedalam array, melalui method pada class MyArray yaitu method:
    • public static char[] buatArrayAngka
    • public static char[] buatArrayHurufBesar 
    • public static char[] buatArrayHurufKecil
  • Menampilkan array yang sudah dibuat dengan method: public static void tampilkanArray (char [] karakter)
  • Menghitung kemunculan setiap karakter yang sama dari setiap array yang dibuat, pada class MyArray menggunakan method:
    • public static int[] hitungKarakterAngka (char [] karakter)
    • public static int[] hitungKarakterHurufBesar (char [] karakter) 
    • public static int[] hitungKarakterHurufKecil (char [] karakter)
  • Selanjutnya menampilkan hasil perhitungan untuk setiap karakter yang muncul, dengan method
    • public static void tampilkanPerhitunganAngka(int [] hitung)
    • public static void tampilkanPehitunganHurufBesar(int [] hitung)
    • public static void tampilkanPehitunganHurufKecil(int [] hitung)

Membuat class KarakterAcak


public class KarakterAcak {
 
 public static char buatKarakterAcak(char karakter1, char karakter2){
  return (char)(karakter1 + Math.random() * (karakter2 - karakter1 + 1));
 }
 
 public static char buatKarakterDigitAngkaAcak(){
  return buatKarakterAcak('0', '9');
 }
 
 public static char buatKarakterHurufKecilAcak(){
  return buatKarakterAcak('a', 'z');
 }
 
 public static char buatKarakterHurufBesarAcak(){
  return buatKarakterAcak('A', 'Z');
 }
 
}


Membuat class MyArray
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import java.util.Scanner;


public class MyArray {
 
 static int jumlahKarakter;
 static int jumlahBaris;

 public static void main (String args []){
  
  Scanner input = new Scanner (System.in);
  
  System.out.print("Berapa jumlah karakter "
    + "acak yang anda inginkan: ");
  jumlahKarakter = input.nextInt();
  
  System.out.print("Berapa jumlah karakter dalam "
      + "setiap baris yang anda inginkan: ");
  jumlahBaris = input.nextInt();
  
  System.out.println();
  
  char arrayAngka [] = buatArrayAngka();
  tampilkanArray(arrayAngka);
  System.out.println();
  
  int[] hitungAngka = hitungKarakterAngka (arrayAngka);
  tampilkanPerhitunganAngka(hitungAngka);
  System.out.println();
  
  char arrayHurufBesar [] = buatArrayHurufBesar();
  tampilkanArray(arrayHurufBesar);
  System.out.println();
  
  int[] hitungHurufBesar = hitungKarakterHurufBesar (arrayHurufBesar);
  tampilkanPerhitunganHurufBesar(hitungHurufBesar);
  System.out.println();
  System.out.println();
  
  char arrayHurufKecil [] = buatArrayHurufKecil();
  tampilkanArray(arrayHurufKecil);
  System.out.println();
  
  int[] hitungHurufKecil = hitungKarakterHurufKecil (arrayHurufKecil);
  tampilkanPerhitunganHurufKecil(hitungHurufKecil);
  
 }
 
 //Membuat array dengan elemen digit angka
 public static char[] buatArrayAngka(){
  System.out.println("Array digit angka: ");
  char karakter [] = new char [jumlahKarakter];
  for(int i = 0; i < karakter.length; i++){
   karakter[i] = KarakterAcak.buatKarakterDigitAngkaAcak();
   }
  return karakter;
  }
 
 //Membuat array dengan elemen huruf besar
 public static char[] buatArrayHurufBesar(){
  System.out.println("Array huruf besar: ");
  char karakter [] = new char [jumlahKarakter];
  for(int i = 0; i < karakter.length; i++){
   karakter[i] = KarakterAcak.buatKarakterHurufBesarAcak();
   }
  return karakter;
  }
 
 //Membuat array dengan elemen huruf kecil
 public static char[] buatArrayHurufKecil(){
  System.out.println("Array huruf kecil: ");
  char karakter [] = new char [jumlahKarakter];
  for(int i = 0; i < karakter.length; i++){
   karakter[i] = KarakterAcak.buatKarakterHurufKecilAcak();
   }
  return karakter;
  }
 
 
 //Method untuk menampilkan array
 public static void tampilkanArray(char[] karakter){
  for(int i = 0; i < karakter.length; i++){
   if((i + 1) % jumlahBaris == 0){
    System.out.println(karakter[i]);
    }
   else
    System.out.print(karakter[i] + " ");
   }
  }
 
 //Menghitung kemunculan setiap karakter angka
 public static int[] hitungKarakterAngka (char [] karakter){
  int [] hitung = new int [10];
  
  for (int i = 0; i < karakter.length; i++){
   hitung[karakter[i] - '0']++;
  }
  return hitung;
 }
 
 //Menampilkan perhitungan setiap karakter angka
 public static void tampilkanPerhitunganAngka(int[] hitung) {
  System.out.println("Jumlah setiap karakter angka adalah:");
  for (int i = 0; i < hitung.length; i++) {
   if ((i + 1) % 10 == 0){
    System.out.println((char)(i + '0') + "=" + hitung[i]);
   }else{
    System.out.print((char)(i + '0') + "=" + hitung[i]  + " ");
   }
  }
 }
 
 ////Menghitung kemunculan setiap karakter huruf Besar
 public static int[] hitungKarakterHurufBesar (char [] karakter){
  int [] hitung = new int [26];
  
  for (int i = 0; i < karakter.length; i++){
   hitung[karakter[i] - 'A']++;
  }
  return hitung;
 }
 
 //Menampilkan perhitungan setiap huruf besar
 public static void tampilkanPerhitunganHurufBesar(int[] hitung) {
  System.out.println("Jumlah setiap karakter huruf besar adalah:");
  for (int i = 0; i < hitung.length; i++) {
   if ((i + 1) % 10 == 0){
    System.out.println((char)(i + 'A') + "=" + hitung[i]);
   }else{
    System.out.print((char)(i + 'A') + "=" + hitung[i]  + " ");
   }
  }
 }
 
 //Menghitung kemunculan setiap karakter huruf kecil
 public static int[] hitungKarakterHurufKecil (char [] karakter){
  int [] hitung = new int [26];
  
  for (int i = 0; i < karakter.length; i++){
   hitung[karakter[i] - 'a']++;
  }
  return hitung;
 }
 
 public static void tampilkanPerhitunganHurufKecil(int[] hitung) {
  System.out.println("Jumlah setiap karakter huruf kecil adalah:");
  for (int i = 0; i < hitung.length; i++) {
   if ((i + 1) % 10 == 0){
    System.out.println((char)(i + 'a') + "=" + hitung[i]);
   }else{
    System.out.print((char)(i + 'a') + "=" + hitung[i]  + " ");
   }
  }
 }
 
}

Contoh Output:

Berapa jumlah karakter acak yang anda inginkan: 100
Berapa jumlah karakter dalam setiap baris yang anda inginkan: 20

Array digit angka:
7 2 9 7 2 7 5 3 4 2 7 4 0 0 9 6 1 5 1 7
5 2 9 8 0 5 3 3 9 8 4 2 6 8 3 6 4 1 1 6
7 8 1 8 8 4 7 4 4 5 4 5 9 8 0 0 6 0 1 6
3 5 3 4 6 5 4 8 0 5 7 4 7 1 7 9 4 6 8 0
9 3 0 4 2 3 2 4 6 2 3 2 4 6 1 0 7 9 4 1

Jumlah setiap karakter angka adalah:
0=10 1=9 2=9 3=9 4=16 5=9 6=10 7=11 8=9 9=8

Array huruf besar:
Q T F Z E B A R Z N S R U E T V T O L Y
S T S L C I X A N B L R Y L S H L Z O H
Z M J Y Q B J W Y V X I H K J B W E O N
T Z E V Z X A D I G Q W X L B X S Q R W
X H P C T V R K I D O L W F D L D U Z U

Jumlah setiap karakter huruf besar adalah:
A=3 B=5 C=2 D=4 E=4 F=2 G=1 H=4 I=4 J=3
K=2 L=8 M=1 N=3 O=4 P=1 Q=4 R=5 S=5 T=6
U=3 V=4 W=5 X=6 Y=4 Z=7

Array huruf kecil:
b f z q l d d p t g q i g w a u v r x n
b m a q y v l n t y s y a j t r k u o p
x t n s f s d m o p u m a u y x j h u k
t f k t o s y e r v w z s w u e v u u m
w g l y i q z v o f w h o y d c c r y k

Jumlah setiap karakter huruf kecil adalah:
a=4 b=2 c=2 d=4 e=2 f=4 g=3 h=2 i=2 j=2
k=4 l=3 m=4 n=3 o=5 p=3 q=4 r=4 s=5 t=6
u=8 v=5 w=5 x=3 y=8 z=3

Mengembalikan (Return) Array Dari Suatu Method

Mengembalikan (Return) Array Dari Suatu Method

Method dalam Java hanya mengembalikan referensi terhadap tipe data apapun. Misalnya:
  • int[], suatu referensi terhadap integer array
  • double[],suatu referensi terhadap double array
  • String, suatu referensi terhadap array dari karakter-karakter


Berikut ini adalah contoh method yang mengembalikan sebuah array:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class ReturnArray {
 
 public static void main(String args []){
  
  double b [];
  b = kembalikanArray();
  
   System.out.println("Array b setelah memanggil "
     + "method kembalikan Array:");      

       for (int i = 0; i < b.length; i++)
          System.out.print(b[i] + " ");
  
 }
 
 public static double[] kembalikanArray(){
  double a [] = new double [5];
  a[0] = 1.25;
  a[1] = 2.38;
  a[2] = 0.92;
  a[3] = 3.27;
  a[4] = 4.18;
  
  return(a);
 }

}

Output:
Array b setelah memanggil method kembalikan Array:
1.25 2.38 0.92 3.27 4.18

Bagaimana kalau ingin membuat 3 array dengan 10 nilai int random antara 0 sampai 100 dengan menggunakan method tersebut?

Contoh:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Random;
public class ReturnArray {
 
 public static void main(String args []){
  
  int b [] = kembalikanArray();
  int c [] = kembalikanArray();
  int d [] = kembalikanArray();
  
  
  System.out.println("Array b setelah memanggil "
     + "method kembalikan Array:");      

       for (int i = 0; i < b.length; i++){
          System.out.print(b[i] + " ");
       }
       
     System.out.println();
     
     System.out.println("Array c setelah memanggil "
      + "method kembalikan Array:");      

    for (int i = 0; i < c.length; i++){
           System.out.print(c[i] + " ");
    }
    
  System.out.println();
  
     System.out.println("Array d setelah memanggil "
      + "method kembalikan Array:");      

    for (int i = 0; i < d.length; i++){
           System.out.print(d[i] + " ");
    }  
  
 }
 
 
 public static int[] kembalikanArray(){
  
  Random angkaRandom = new Random ();
  int [] a = new int [10];
    
    for (int i = 0; i < a.length; i++){
     a[i] = angkaRandom.nextInt(100);
    }
  
  return(a);
 }

}

Output:
Array b setelah memanggil method kembalikan Array:
70 55 47 90 32 69 83 50 70 76
Array c setelah memanggil method kembalikan Array:
62 82 81 90 90 90 79 88 47 90
Array d setelah memanggil method kembalikan Array:
12 44 77 14 47 24 5 18 25 97

Pada kedua contoh di atas, method kembalikanArray tidak memiliki parameter. Berikut ini adalah contoh method kembalikanArray dengan parameter yang mengembalikan array dengan urutan terbalik.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class ReturnArray {
 
 public static void main(String args []){
  
  int b [] = {5, 6, 7, 8, 9, 10};
  int c [] = kembalikanArray(b);
  
  System.out.println("Array c setelah memanggil "
     + "method kembalikan Array:");      

       for (int i = 0; i < c.length; i++){
          System.out.print(c[i] + " ");
       }
       
     System.out.println();
  
 }
 
 
 public static int[] kembalikanArray(int a []){
  
  int [] hasil = new int [a.length];
  
  for(int i = 0, j = hasil.length - 1; i < a.length;
    i++ , j--){
   
   hasil [j] = a[i];
  }
  
  return hasil;
  
 }

}

Output:
Array c setelah memanggil method kembalikan Array:
10 9 8 7 6 5