전형적인 면접 질문 중 하나는 세 번째 변수를 임시 저장 공간으로 사용하지 않고 두 변수의 값을 바꾸는 방법입니다. . 일반적으로 이는 다음과 같이 임시 변수를 사용하여 수행됩니다.
temp = a; a = b; b = temp;
그러나 이 접근 방식에는 추가 메모리 할당 및 조작이 필요합니다. 대체 솔루션은 XOR 스왑 알고리즘을 사용하는 것입니다.
XOR 스왑 알고리즘은 배타적 OR(XOR) 연산을 활용하여 작동합니다. XOR 연산자에는 XOR a는 항상 0을 반환하고 XOR b는 b가 0이면 a를 반환하고 a가 0이면 b를 반환하는 속성이 있습니다.
이 속성을 사용하면 두 변수의 값을 바꿀 수 있습니다. x와 y는 다음과 같습니다.
// XOR swap function void xorSwap(int* x, int* y) { if (x != y) { //ensure that memory locations are different *x ^= *y; *y ^= *x; *x ^= *y; } }
이유는 무엇인가요? 작동:
XOR 연산: 그런 다음 다음 XOR 연산을 순서대로 수행합니다.
이러한 연산의 결과로 *x는 이제 *y에는 원래 값 *y가 포함되고 *y에는 *x의 원래 값이 포함됩니다.
다음은 XOR 스왑 알고리즘을 사용하는 방법에 대한 예입니다. C:
#include <stdio.h> int main() { int a = 10; int b = 15; printf("Before swap: a = %d, b = %d\n", a, b); xorSwap(&a, &b); printf("After swap: a = %d, b = %d\n", a, b); return 0; }
출력:
Before swap: a = 10, b = 15 After swap: a = 15, b = 10
XOR 스왑 알고리즘은 효율적이고 세 번째 변수가 필요하지 않지만 항상 그런 것은 아닙니다. 가장 최적의 솔루션. 대부분의 경우 컴파일러는 임시 변수를 사용하는 보다 전통적인 방법을 사용하여 코드를 최적화합니다. 따라서 XOR 스왑 알고리즘을 사용하기 전에 프로그램의 특정 요구 사항을 고려하는 것이 중요합니다.
위 내용은 세 번째 변수를 사용하지 않고 변수 값을 바꾸는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!