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

rogp10 viết 14:16 ngày 01/10/2018

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

Tung Dao viết 14:15 ngày 01/10/2018

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

Văn Dương viết 14:08 ngày 01/10/2018

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

Bài liên quan
0