Kí hiệu ^= trong đoạn mã sau là gì?

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

Đâ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.

1 Like

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

1 Like

Đâ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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?