Salah satu soalan temu bual klasik ialah cara menukar nilai dua pembolehubah tanpa menggunakan pembolehubah ketiga sebagai ruang simpanan sementara . Lazimnya, ini dilakukan menggunakan pembolehubah sementara seperti berikut:
temp = a; a = b; b = temp;
Walau bagaimanapun, pendekatan ini memerlukan peruntukan dan manipulasi memori tambahan. Penyelesaian alternatif adalah dengan menggunakan algoritma swap XOR.
Algoritma swap XOR berfungsi dengan mengeksploitasi operasi OR (XOR) eksklusif. Pengendali XOR mempunyai sifat bahawa XOR a sentiasa mengembalikan 0, manakala XOR b mengembalikan a jika b ialah 0, dan b jika a ialah 0.
Menggunakan sifat ini, kita boleh menukar nilai dua pembolehubah x dan y seperti berikut:
// XOR swap function void xorSwap(int* x, int* y) { if (x != y) { //ensure that memory locations are different *x ^= *y; *y ^= *x; *x ^= *y; } }
Mengapa ia berfungsi:
Operasi XOR: Kami kemudian melakukan operasi XOR berikut mengikut urutan:
Hasil daripada operasi ini, *x kini mengandungi nilai asal *y, dan *y mengandungi nilai asal *x.
Berikut ialah contoh cara menggunakan algoritma swap XOR dalam C:
#include <stdio.h> int main() { int a = 10; int b = 15; printf("Before swap: a = %d, b = %d\n", a, b); xorSwap(&a, &b); printf("After swap: a = %d, b = %d\n", a, b); return 0; }
Output:
Before swap: a = 10, b = 15 After swap: a = 15, b = 10
Sementara XOR algoritma swap adalah cekap dan menghapuskan keperluan untuk pembolehubah ketiga, ia tidak selalu merupakan penyelesaian yang paling optimum. Dalam banyak kes, pengkompil akan mengoptimumkan kod menggunakan kaedah yang lebih tradisional dengan pembolehubah sementara. Oleh itu, adalah penting untuk mempertimbangkan keperluan khusus program anda sebelum menggunakan algoritma swap XOR.
Atas ialah kandungan terperinci Bagaimana Menukar Nilai Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!