24 Jul, 2007
Menukar Nilai 2 Variabel tanpa Variabel Perantara (Memorisasi vs. Kalkulasi)
Bagaimana cara menukar (swap) nilai 2 variabel tanpa menggunakan variabel perantara (temporary)?
Bagi yang belum mengetahui, untuk menukar nilai 2 variabel, biasanya kita menggunakan variabel perantara untuk menampung sementara nilai, sebagaimana cuplikan kode (dalam bahasa Java) di bawah ini:
public class SwapWithTemp {
public static void main(String[] args) {
int x = 34, y = 78, t;
t = x;
x = y;
y = t;
System.out.println(x + ” ” + y);
}
}
Pada kode di atas, t adalah variabel penampung nilai x, sebelum nilai x ditimpa oleh nilai y.
Operasi XOR (exclusive or) dapat digunakan untuk menukar nilai 2 variabel tanpa harus menggunakan variabel perantara. Berikut cuplikan kodenya (dalam bahasa Java):
public class SwapWithoutTemp {
public static void main(String[] args) {
int x = 34, y = 78;
x = x ^ y;
y = x ^ y;
x = x ^ y;
System.out.println(x + ” ” + y);
}
}
Lalu… Apa perbedaan antara keduanya?
In my opinion. Hasil kedua cara di atas adalah tetap sama, tetapi dalam pemrosesannya terdapat perbedaan, yaitu: pada cara pertama tidak dibutuhkan kalkulasi (perhitungan) yang ada hanyalah memorisasi (penggunaan memori/ingatan), sedangkan cara kedua memorisasi lebih sedikit tetap membutuhkan beberapa kalkulasi.
Saya teringat waktu kuliah, seorang teman mengatakan tentang “Hukum Kekekalan Informatika” (valid enggak ya istilah ini?) yang menyatakan bahwa “kalkulasi berbanding terbalik dengan memorisasi”. Apakah permyataan ini masih relevan dengan realitas saat ini?
Catatan: Algoritma XOR di atas diambil dari handout Web Algorithms (Jason Hunter), Session TS-6045, JavaOne 2007.



