Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Anda Boleh Menukar Dua Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?

Bagaimanakah Anda Boleh Menukar Dua Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-09 13:42:15430semak imbas

How Can You Swap Two Variables Without Using a Third Variable?

Menukar Pembolehubah Tanpa Varian Ketiga

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:

  • Pernyataan if menyemak jika x dan y mempunyai lokasi memori yang berbeza untuk memastikan ia tidak menunjuk kepada nilai yang sama.
  • Pengendali XOR digunakan tiga kali untuk menukar nilai secara berturut-turut. Setiap operasi XOR membalikkan bit pembolehubah yang sepadan, menukar kandungannya dengan berkesan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn