menukar
nilai dari 2 variabel. Maksudnya ketika kita mempunyai variabel a dengan nilai
1 dan variabel b dengan nilai 2. maka setelah kita tukar nilainya, variabel a
mempunyai nilai 2 dan variabel b mempunyai nilai 1.
Ada
beberapa metode yang dapat digunakan untuk menukar nilai ini.
- Menggunakan Variabel Sementara
- Menggunakan Hanya 2 Variabel dengan melibatkan
perhitungan aritmatika
- Menggunakan Hanya 2 Variabel dengan melibatkan bits
operation XOR (eXclusive OR)
1.
Menggunakan Variabel Sementara
Cara
ini adalah cara termudah dan cara yang paling ‘tepat menuju sasaran’ / ‘naif’
karena cara ini menggunakan logika keseharian yang tidak rumit. Logika dari
cara ini adalah seperti ini:
Asumsikan
kita mempunyai secangkir kopi di gelas A, dan secangkir teh di gelas B. Bagaimana
cara kita untuk menukar isi dari kedua cangkir ini sehingga Kopi di gelas B,
dan teh di gelas A?
Cara
termudah tentunya adalah kita menghadirkan gelas C ! Sehingga kopi yang di
gelas A dituang ke gelas C, dan teh yang di gelas B dituang ke gelas A, setelah
itu Kopi yang di gelas C tuangkan ke gelas B. Tertukarlah sudah isi dari kedua
buah gelas itu. mudah bukan?
dengan
logika sederhana ini, kita dapat membuat algoritmanya dalam bahasa C seperti
berikut:
Sangat
mudah bukan?
Bagaimana
dengan Cara ke-2?
2.
Variabel, Perhitungan !
Boleh
dikatakan bahwa cara ke-2 ini secara logika lebih sulit untuk terpikirkan
karena melibatkan perhitungan aritmatika. Namun, perhitungan aritmatika ini
sebenarnya hanya melibatkan operator tambah dan kurang saja. Terlebih lagi,
kita tidak membutuhkan sebuah variabel tambahan seperti cara pertama.
Mari
kita asumsikan bahwa variabel a memiliki nilai 2 dan b memiliki nilai 3. Maka
caranya adalah kita buat variabel a memiliki nilai hasil tambah dari variabel a
dan b yaitu menjadi 5, dan variabel b tetap memiliki nilai 3. kemudian,
variabel b kita buat agar menyimpan hasil dari nilai variabel a dikurang
variabel b, yaitu 5 – 3 = 2. Sampai disini, maka variabel a kita buat agar
menyimpan hasil dari variabel a dikurang variabel b yaitu 5 – 2 = 3. Maka
setelah proses ini selesai, nilai dari variabel a dan b akan tertukar.
Logika
di atas, kita dapat membuat algoritmanya dalam bahasa C seperti berikut:
Lalu,
apakah ada yang dapat menemukan kelemahan dari algoritma di atas? Atau bahkan
testcase (test data) yang dapat membuat algoritma di atas menjadi salah?
Setelah
ini, apakah anda tertarik untuk membahas algoritma tercepat untuk tukar nilai
ini?? Algoritma ke-3 akan sedikit rumit karena bukan melibatkan perhitungan,
melainkan dengan cara operasi bits.
Tertarik?
3.
XOR ! Bits Operation Involved
Untuk
mengerti tentang operasi ini, anda harus terlebih dahulu mengenal operasi bits
XOR. Sesuai dengan namanya, operasi bits bekerja dalam level bits. Baca
mengenai XOR di http://en.wikipedia.org/wiki/Exclusive_or
Perlu
diketahui, operasi bits memiliki sifat sebagai berikut
sehingga,
melalui sifat tersebut, Apabila kita memiliki dua buah variabel A dan B, dan
melakukan operasi berikut
X
= ( A XOR B ) XOR A, maka hasil dari X adalah B. Kenapa?
Sehingga,
melihat sifat tersebut, kita dapat menukar isi dari variabel A dan B melalui
algoritma berikut:
Setelah
baris ketiga, maka nilai dari variabel A akan berubah menjadi nilai variabel B,
dan begitu pula dengan nilai variabel B akan berubah menjadi nilai variabel A.
Berikut
adalah algoritma di atas diimplementasikan dengan bahasa C:
Operator
“^” pada bahasa C/C++ bukan merupakan operator untuk melakukan pangkat ( “^”
adalah operator untuk pangkat dalam microsoft excel ) melainkan operator
bitwise XOR.
Akhir
kata, semoga tutorial ini bermanfaat bagi kita semua sehingga yang sebelumnya
tidak mengerti menjadi mengerti, yang sebelumnya tidak tahu menjadi tahu, dan
yang sebelumnya sudah mengerti menjadi tambah mengerti.