Menukar isi dua buah variabel
Pada post kali ini, saya akan menjelaskan beberapa teknik untuk 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)
Perlu diketahui untuk cara ke-2 dan ke-3, lebih baik dijalankan hanya untuk bilangan bulat saja (baca mengenai bilangan bulat di http://id.wikipedia.org/wiki/Bilangan_bulat ).
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.