표준 스왑이란 무엇입니까?

컴퓨터 프로그래밍 및 컴퓨터 과학에서 표준 스왑은 두 변수가 값을 교환해야하는 프로그램의 상황으로, 값이 전달 될 때 중개자 역할을하는 세 번째 변수를 작성해야합니다. 표준 스왑은 프로그래밍 패러다임으로, 두 조각의 데이터를 교환해야하는 모든 상황에 적용 할 수 있으며 하나의 데이터 유형이나 프로그래밍 언어와 관련이 없습니다. 값을 교환해야하는 프로그램에는 많은 인스턴스가 있지만, 정렬 변수와 함께 사용하는 경우 컬렉션 및 배열의 ​​표준 구성 요소 인 경우가 종종 있습니다. 정렬 알고리즘을 사용하면 컬렉션의 한 인덱스에서 다른 인덱스로 항목을 이동해야합니다. 교환되는 가치. 하드웨어 관점에서 표준 스왑은 정수와 같은 일부 스칼라 데이터 유형에 대해 지원되는 저수준 프로세서 기능 일 수 있습니다. 즉, 두 숫자를 스왑하기 위해 RAM (random access memory)에서 중간 값을 작성할 필요가 없습니다.

표준 스왑의 개념은 변수 A와 B로 볼 수 있습니다. 표준 스왑이 끝날 때 B는 A와 같고 A는 B와 같아야합니다. 프로그램이 단순히 B를 A에 할당하면 A의 값이 손실되고 나중에 B에 할당 할 수 없습니다. B가 A에 할당 된 동안 A의 값을 보유하는 임시 변수. 마지막 단계는 임시 변수 값을 B에 할당하여 스왑을 완료하는 것입니다.

표준 스왑의 가장 일반적인 응용 프로그램 중 하나는 배열 또는 컬렉션에서 정렬 알고리즘을 사용할 때입니다. 정렬 알고리즘이 배열 인덱스 1의 데이터를 인덱스 10의 데이터와 교체해야한다고 결정한 경우 데이터의 표준 스왑을 수행 할 수 있습니다. 이는 C와 같은 언어로 포인터 참조를 사용하여 매우 빠르게 수행 할 수 있습니다.

두 개의 객체 인스턴스를 교체해야 할 경우 일부 객체 지향 프로그래밍 언어에서 복잡성이 발생할 수 있습니다. 아주 드문 경우지만 단순히 객체 참조를 바꾸는 것은 실제 스왑을 시작하지 않습니다. 대신, 오브젝트를 교환하는 유일한 방법은 두 오브젝트와 임시 오브젝트 변수 사이에서 필드별로 내부 데이터를 복제하는 것입니다.

배타적 논리합 (XOR) 논리 연산자를 사용하여 기술적으로 표준 스왑을 수행하는 데 사용할 수있는 기술이 하나 있습니다. XOR 스왑은 XOR을 사용하여 두 비트를 계산할 때 본질적으로 하나 또는 두 연산자로 반전 될 수있는 마스크를 생성한다는 사실에 의존합니다. 이런 식으로 두 변수 A와 B의 두 변수는 먼저 두 변수 중 XOR로 마스크를 만든 다음 XOR을 사용하여 B의 값과 A의 값을 먼저 마스킹 해제하여 교환 할 수 있습니다. 임시 변수를 만들면 모든 경우, 특히 A와 B가 서로 같을 때와 컴파일러 최적화가 실제 작업을 변경할 수있는 경우 스왑하지 않습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?