Swapํจ์ ๊ธฐ๊ณ์ด(์ด์ ๋ธ)๋ก ํด์ํ๊ธฐ
ํํ ์๋ฆฌ ๋ฐ๊พธ๊ธฐ ํจ์๋ผ๊ณ ํ์ฃ .
Swapํจ์์ ์์ค๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ์ฌ(์ด์ ๋ธ) ํด์ํด๋ณด๊ฒ ์ต๋๋ค.
์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ก ์์ค ๊ณต๋ถ๋ฅผ ํ๋ฉด ์ข์ ์ ์,
๋ค์๊ณผ ๊ฐ๋ค.
1. ์ด์ ๋ธ๋ฆฌ ๊ณต๋ถ๊ฐ ๋๋ค.
2. C์ธ์ด ํฅ์์ ๋์์ด ๋๊ณ , ๊น๊ฒ ๊ณต๋ถํ ์ ์๋ค.
3. ๋ณต์กํ๊ฒ ๊ธฐ๊ณ์ด๋ก ๋ฐ๋๋ ๋ถ๋ถ์ ๋ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ํ ์ ์๊ฒ ๋๋ค.
๋จผ์ Swapํจ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
#include<stdio.h>
//temp๋ฅผ ์ด์ฉํ์ฌ a์ b์ ๊ฐ์ ์๋ก ๋ฐ๊พธ๊ธฐ
void Swap(int* pa, int* pb)
{
int temp = *pa; // start(*pa) = 96, end(*pb)=5;
*pa = *pb; //start(*pa) = 5, end(*pb)=5;
*pb = temp; //start(*pa)= 5, end(*pb) = 96;
}
void main() {
int start = 96, end = 5;
printf("before : start = %d, end = %d\n", start, end);
if (start > end) {
Swap(&start, &end);//๊ฐ์ด ์๋ ์ฃผ์๋ฅผ ๋ณด๋ด์ค๋ค.
}
printf("after : start = %d, end = %d\n", start, end);
}
์ ์์ค์ฝ๋๋ฅผ ์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ผ๋ก ํ์ธํด๋ณด์.
์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ด ํ์ธํ๋ ๋ฐฉ๋ฒ
1. ์ฝ๋ ์์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ ๊ฑธ๊ธฐ.
2. ๋๋ฒ๊ทธ -> ๋๋ฒ๊น ์์
3. ๋๋ฒ๊ทธ ํฌ์ธํธ๊ฐ ๊ฑธ๋ฆฐ๋ค.
4. ๋ง์ฐ์ค ์ฐํด๋ฆญ -> ๋์ค์ด์ ๋ธ๋ก ์ด๋
5. ์ด์ ๋ธ๋ฆฌ ์์ค ํ์ธ ๊ฐ๋ฅ
์๋๋ Swapํจ์ ๋ช ๋ น
mainํจ์
main๊ณผ swap์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ ๋ค๋ฅด๊ณ ๋ด์ฉ๋ ๋ค๋ฅด๋ค.
์๋ก bp์ sp ๋ฅผ ์ด์ฉํ์ฌ ์์น๋ฅผ ๋ณ๊ฒฝํด๊ฐ๋ฉฐ ๊ฐ์ ์ฐ์ฐํ๊ณ ์๋ค.
๋๋ฌด 100%์๋ฒฝํ ํด์ํ๊ณ ์ ํ ํ์๋ ์๊ณ ,
ํ๋ฆ๊ณผ ๊ฐ ๊ฐ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ ์ฐพ์ ์ ์๋ ์ ๋๋ก ๊ณต๋ถํด๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค.. (์ด๋ณด์ ์ ์ฅ์์ !!)
์์ธํ ํด์ํด๋ณด๊ณ ์ถ๋ค๋ฉด, ์ด์ ๋ธ๋ฆฌ์ ๋ํ ์ดํด๊ฐ ์กฐ๊ธ ํ์ ํ ์ ์์ผ๋ ์๋ ๊ธ์ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
'์ธ์ด ๊ณต๋ถ/์ด์ ๋ธ๋ฆฌ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๐ธ๐ป๐ซ
lucete1230-cyberpolice.tistory.com