Pengenalan:
Menukar nilai dua pembolehubah ialah tugas pengaturcaraan biasa. Biasanya, pembolehubah ketiga digunakan sebagai pemegang tempat sementara untuk memudahkan pertukaran. Walau bagaimanapun, dalam sesetengah senario, adalah wajar untuk mengelak daripada mencipta pembolehubah tambahan untuk pengoptimuman memori atau sebab lain.
Pernyataan Masalah:
Tukar nilai dua pembolehubah a dan b tanpa menggunakan pembolehubah ketiga.
Penyelesaian: XOR Swap Algoritma
Algoritma swap XOR memanfaatkan operator XOR (^) untuk menukar kandungan dua pembolehubah. Algoritma ditakrifkan sebagai:
void xorSwap(int* x, int* y) { if (x != y) { //ensure that memory locations are different *x ^= *y; *y ^= *x; *x ^= *y; } }
Butiran Pelaksanaan:
Contoh:
Mari kita tunjukkan algoritma dengan a = 10 dan b = 15:
// Before swap a = 10 (00001010) b = 15 (00001111) // XOR step 1 a = a ^ b = 00001010 ^ 00001111 = 00000101 // XOR step 2 b = b ^ a = 00001111 ^ 00000101 = 00001010 // XOR step 3 a = a ^ b = 00000101 ^ 00001010 = 00001111 // After swap a = 15 b = 10
Pertimbangan:
Walaupun algoritma swap XOR boleh cekap, ia biasanya tidak disyorkan untuk digunakan dalam senario pengaturcaraan biasa. Penyusun moden boleh mengoptimumkan penggunaan pembolehubah sementara, menjadikannya lebih cekap untuk menukar nilai dalam kebanyakan kes.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menukar Dua Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!