2007. 10. 7. 07:11

서로 다른 SWAP 알고리즘 3가지

소개
자료의 내용을 바꾸는 SWAP 알고리즘은 자주 쓰는 프로그래밍 기법들 중 하나 입니다. 요즘은 기본적으로 제공되긴 하지만, 배워 두면 나중을 위해 좋습니다.

코드


수행 결과

A = 10 B = 20
SWAP_TEMP : A = 20 B = 10
SWAP_XOR : A = 20 B = 10
SWAP_PLUS : A = 20 B = 10


설명

- SWAP_XOR 매크로 : 서로의 내용이 다를때만 1이고 같으면 0 이 되는 비트 연산자 입니다. 자료 구조는 정수형이지만, 각 비트당 연산을 수행하므로 XOR 연산이 가능합니다.

- SWAP_TEMP 함수 : call-by-reference 구조로 지역 변수가 저장된 주소를 입력하여 변환을 시도 하므로 값이 바뀌게 됩니다. 가장 간단하게 구현 할수 있는 알고리즘 입니다.

- SWAP_PLUS 함수 덧셈, 뺄셈 연산자 :  이 매크로는 숫자형 자료 일때 간단하게 구현 할수 있는 구조 입니다.

- 기본적으로 속도가 빠르며 별도의 변수도 필요하지 않는 XOR 연산자로 된 SWAP 알고리즘을 선호합니다.

추가 자료, 출처
- C 언어 포인터 완전제패 (Kazuya Maebashi, 영진 닷컴)
- 구글 검색