01/10/2018, 12:03
Cho mình hỏi kí hiệu ^= trong đoạn mã sau là gì vậy?
void selectionSort(int a[], int n) {
//Mảng a[m] có độ dài n
for (int i = 0; i < n - 1; i++) {
int max = i;
for (int j = i + 1; j < n; j++)
if (a[max] > a[j])
max = j;
if (max != i) {
a[max] ^= a[i];
a[i] ^= a[max];
a[max] ^= a[i];
}
}
}
trong đoạn mã trên có kí hiệu ^= nghĩa là gì vậy. Nguồn https://vi.wikipedia.org/wiki/Sắp_xếp_chọn
Bài liên quan
Đây là một cách swap không chính thống. Bạn nên đọc giáo trình thì hơn.
Vả lại vấn đề là compiler sẽ không tự nhận đây là swap nên sẽ cản trở việc tối ưu.
a ^= b;
tương đương
a = a ^ b;
Học lại C cơ bản trước rồi đọc đến mấy cái này nha bạn
Đây là phép toán XOR. Học kỹ thuật số sẽ hiểu cái này.
Y = A ^ B.
Kết quả :
A B Y
0 0 0
0 1 1
1 0 1
1 1 0