두개의 값이 주어졌을 때 , 서로 값을 바꾸는 것을 swap 이라고 한다.
방법 1) 포인터를 이용하는 방식이다.
#include <iostream>
void MySwapPrt(int* a, int* b);
int main(void){
int x = 10;
int y = 5;
std::cout << "before:" << x << " " << y << '\n';
//x == 10 , y == 5
MySwapPtr(&x, &y);
std::cout << "after:" << x << " " << y << '\n';
//x == 5 , y == 10
return 0;
}
void MySwapPtr(int* a, int* b){
int temp = *a;
*a = *b;
*b = temp;
}
방법 2) 포인터 대신 & 를 이용하는 방법도 있다. 이 방법을 사용하면 *를 사용하지 않아 보기에 깔끔해 보인다.
#include <iostream>
void MySwapRef(int &a, int &b);
int main(void){
int x = 10;
int y = 5;
std::cout << "before:" << x << " " << y << '\n';
//x == 10 , y == 5
MySwapPtr(x, y);
std::cout << "after:" << x << " " << y << '\n';
//x == 5 , y== 10
return 0;
}
void MySwapPtr(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
방법 3) swap 을 할 때 반드시 temp 를 사용해야 한다고 생각했는데, 아니었다. 사칙연산을 이용하면 temp를 사용하지 않고도 가능하다.
#include <iostream>
int main(void) {
int x = 10;
int y = 5;
std::cout << "before:" << x << " " << y << '\n';
// 덧셈, 뺄셈 이용
x = x + y; // x == 15
y = x - y; // y == 10
x = x - y; // x == 5
// 곱셈, 나눗셈 이용
x = x * y; // x == 50
y = x / y; // y == 10
x = x / y; // x == 5
std::cout << "after:" << x << " " << y << '\n';
return 0;
}
'DataStructure' 카테고리의 다른 글
BinarySearch (이진탐색) (0) | 2024.06.25 |
---|---|
SequentialSearch (순차 탐색) (0) | 2024.06.22 |
InsertionSort (삽입 정렬) (0) | 2024.06.20 |
BubbleSort (버블정렬) (0) | 2024.06.19 |
SelectionSort (선택 정렬) (0) | 2024.06.19 |