> 백엔드 개발 > C++ > 세 번째 변수를 사용하지 않고 두 변수를 어떻게 바꿀 수 있습니까?

세 번째 변수를 사용하지 않고 두 변수를 어떻게 바꿀 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-09 13:42:15
원래의
467명이 탐색했습니다.

How Can You Swap Two Variables Without Using a Third Variable?

세 번째 변형 없이 변수 교환

소개:

두 변수의 값을 교환하는 것은 일반적인 프로그래밍 작업입니다. 일반적으로 세 번째 변수는 교환을 용이하게 하기 위해 임시 자리 표시자로 사용됩니다. 그러나 일부 시나리오에서는 메모리 최적화나 다른 이유로 추가 변수를 생성하지 않는 것이 바람직할 수 있습니다.

문제 설명:

두 변수의 값을 바꿉니다. 세 번째 변수를 사용하지 않고 a와 b.

해결책: XOR 스왑 알고리즘

XOR 교환 알고리즘은 XOR 연산자(^)를 활용하여 두 변수의 내용을 교환합니다. 알고리즘은 다음과 같이 정의됩니다.

void xorSwap(int* x, int* y) {
    if (x != y) { //ensure that memory locations are different
       *x ^= *y;
       *y ^= *x;
       *x ^= *y;
    }
}
로그인 후 복사

구현 세부 정보:

  • if 문은 x와 y가 서로 다른 메모리 위치를 가지고 있는지 확인하여 서로 다른지 확인합니다.
  • XOR 연산자를 3번 적용하여 연속적으로 값을 교환합니다. 각 XOR 연산은 해당 변수의 비트를 뒤집어 내용을 효과적으로 교환합니다.

예:

a = 10 및 b =를 사용하여 알고리즘을 보여드리겠습니다. 15:

// Before swap
a = 10 (00001010)
b = 15 (00001111)

// XOR step 1
a = a ^ b = 00001010 ^ 00001111 = 00000101

// XOR step 2
b = b ^ a = 00001111 ^ 00000101 = 00001010

// XOR step 3
a = a ^ b = 00000101 ^ 00001010 = 00001111

// After swap
a = 15
b = 10
로그인 후 복사

고려 사항:

XOR 스왑 알고리즘은 효율적일 수 있지만 일반적으로 일반적인 프로그래밍 시나리오에서는 사용하지 않는 것이 좋습니다. 최신 컴파일러는 임시 변수의 사용을 최적화하여 대부분의 경우 값을 더 효율적으로 교환할 수 있습니다.

위 내용은 세 번째 변수를 사용하지 않고 두 변수를 어떻게 바꿀 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿