Bài 1: Hoán vị 2 số

Mục tiêu ở đây ta sẽ hoán đổi hai biến a và b (kiểu bất kỳ)

Phương pháp truyền thống

int a, b;
int c = a;
a = b;
b = c;

Đổi giá trị 2 biến không dùng biến trung gian

Sử dụng toán tử toán học

int a, b;
a = a + b;
b = a - b;
a = a - b;

Hoặc:

int a, b;
a += b;
b  = a - b;
a -= b;

Sử dụng toán tử XOR

Với biến kiểu số nguyên, ta có thể khéo léo sử dụng toán tử đảo bit là XOR:

int a, b;
a = a ^ b;
b = a ^ b;
a = a ^ b;

Hoán đổi trên một dòng

a = b + (b = a, 0);

Vẫn là hoán đổi một dòng, nhưng dùng XOR

a = b + (b = a, 0);

https://hocjavascript.net/tong-quan/lam-the-nao-de-hoan-doi-hai-gia-tri-ma-khong-can-bien-phu-trong-javascript/

http://ngoton.it/hoan-vi-2-khong-dung-bien-tam/

https://topdev.vn/blog/hoan-doi-hai-gia-tri-ma-khong-can-bien-phu-trong-javascript/

https://nguyenvanhieu.vn/hoan-vi-2-so-trong-c/

https://codelearn.io/learning/cpp-for-beginners/528350

comments powered by Disqus