Rumah > pembangunan bahagian belakang > C++ > Bagaimana Menukar Nilai Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?

Bagaimana Menukar Nilai Pembolehubah Tanpa Menggunakan Pembolehubah Ketiga?

Barbara Streisand
Lepaskan: 2024-12-12 18:36:10
asal
570 orang telah melayarinya

How to Swap Variable Values Without Using a Third Variable?

Menukar Nilai Pembolehubah Tanpa Pembolehubah Ketiga

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;
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini memerlukan peruntukan dan manipulasi memori tambahan. Penyelesaian alternatif adalah dengan menggunakan algoritma swap XOR.

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;
    }
}
Salin selepas log masuk

Mengapa ia berfungsi:

  1. Semakan lokasi memori: Kami mula-mula menyemak sama ada x dan y mempunyai lokasi memori yang berbeza. Ini penting kerana jika mereka berkongsi lokasi memori yang sama, swap tidak akan berfungsi.
  2. Operasi XOR: Kami kemudian melakukan operasi XOR berikut mengikut urutan:

    • *x ^= *y: Ini menetapkan *x kepada *x XOR *y.
    • *y ^= *x: Ini menetapkan *y kepada *y XOR *x, iaitu *x kerana *x XOR *x ialah 0.
    • *x ^= *y: Akhir sekali, kami menetapkan *x kepada *x XOR *y, iaitu *y kerana *x XOR *x ialah 0.

Hasil daripada operasi ini, *x kini mengandungi nilai asal *y, dan *y mengandungi nilai asal *x.

Contoh Kod

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;
}
Salin selepas log masuk

Output:

Before swap: a = 10, b = 15
After swap: a = 15, b = 10
Salin selepas log masuk

Pertimbangan

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!

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