교환 함수
1 template
2 Swap(T & a,T & b)
3 {
4 T tmp = a ;
5 a = b ;
6 b = tmp ;
7 }
그러나 어떤 면접 이나 알고리즘 을 연구 하 는 사람들의 생각 은 비교적 독특 하거나, 당신 의 생각 이 그렇게 많은 지 보 세 요.그래서 한 가지 문 제 를 제기 했다. 임시 변 수 를 사용 하지 않 는 방법 으로 두 개의 수 를 교환 하여 공간 을 절약 할 수 있 느 냐 는 것 이다.
목적, 그래서 우 리 는 이것 이 임시 변 수 를 사용 하지 않 는 상황 에서 우 리 는 어떻게 두 개의 변수 로 이 일련의 조작 을 완성 하 는 지 고려 해 야 한다.이때 우 리 는 두 개의 변수 만 있 습 니 다. 만약 에 두 개의 값 을 각각 한 변수 에 저장 하면 교환 을 완성 할 수 없 을 것 입 니 다. 이때 우 리 는 한 변수 로 두 개의 값 을 저장 할 수 있 는 지, 한 변 수 는 한 개의 값 을 저장 할 수 있 는 지 생각해 야 합 니 다.아래 코드 참조
1 void Swap(int &a, int &b)
2 {
3 a = a + b;
4 b = a - b;
5 a = a - b;
6 }
우 리 는 하나의 변 수 를 사용 하여 두 개의 값 을 저장 하고 상쇄 를 통 해 두 변수 간 의 교환 을 실현 했다.그러나 이렇게 되면 문제 도 있다. 두 변 수 를 더 한 조작 을 했 기 때문에 넘 치 는 결 과 를 초래 할 수 있다.넘 치지 않도록 두 변수의 값 을 교환 하 는 방법 은 이 럴 때 위치 연산 을 사용 해 야 합 니 다.코드 는 다음 과 같다.
1 void Swap(int &a, int &b)
2 {
3 a = a ^ b;
4 b = a ^ b;
5 a = a ^ b;
6 }
두 변수 간 의 차이 나 조작 을 통 해 두 변수 간 의 교환 을 실현 할 수 있다.다른 방식 을 사용 하면 넘 치 는 상황 을 잘 피 할 수 있 습 니 다. 주어진 값 이 넘 치지 않 는 다 면 함수 로 교환 해도 절대 넘 치지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.