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

Bagaimanakah Anda Boleh Menukar Dua Nilai Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?

Linda Hamilton
Lepaskan: 2024-12-24 21:21:46
asal
902 orang telah melayarinya

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

Menukar Nilai Pembolehubah Tanpa Pembolehubah Ketiga: Teka-teki Temu Bual

Dalam temu bual pembangunan perisian, soalan biasa dikemukakan: bagaimana untuk menukar nilai dua pembolehubah tanpa menggunakan pembolehubah ketiga? Secara tradisinya, ini dicapai menggunakan pembolehubah sementara sebagai pemegang tempat.

Untuk memintas keperluan pembolehubah ketiga, algoritma swap xor boleh digunakan. Teknik ini menggunakan operasi OR eksklusif (XOR), yang mengembalikan 0 jika kedua-dua bit adalah sama dan 1 jika ia berbeza.

Algoritma Swap XOR:

void xorSwap(int* x, int* y) {
    if (x != y) { //ensure that memory locations are different
       *x ^= *y;
       *y ^= *x;
       *x ^= *y;
    }
}
Salin selepas log masuk

Algoritma ini berfungsi dengan melakukan langkah berikut:

  1. Semak sama ada x dan y merujuk kepada berbeza lokasi ingatan. Jika ya, teruskan.
  2. Lakukan operasi XOR antara *x dan *y, simpan hasilnya dalam *x. Ini pada asasnya membalikkan bit *x untuk memadankan bit *y.
  3. Lakukan operasi XOR lain antara *x dan *y, menyimpan hasil dalam *y. Ini membalikkan bit *y untuk memadankan bit *x asal.
  4. Lakukan operasi XOR akhir antara *x dan *y, menyimpan hasil dalam *x. Ini membalikkan bit *x kembali kepada nilai asalnya.

Pertimbangan:

  • Adalah penting untuk memastikan bahawa x dan y merujuk kepada yang berbeza lokasi ingatan. Jika tidak, XORing mereka akan membatalkan sebarang perubahan yang dibuat.
  • Algoritma ini biasanya tidak digunakan dalam amalan kerana penyusun moden mengoptimumkan keperluan untuk pembolehubah sementara. Walau bagaimanapun, ia mempamerkan konsep menggunakan operasi bitwise untuk mencapai operasi yang kompleks.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menukar Dua Nilai Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan