https://www.programiz.com/c-programming/online-compiler/
Online C Compiler
www.programiz.com
๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋?
- ์๋ก ์ธ์ ํ ๋ ์์๋ผ๋ฆฌ ๋น๊ต๋ฅผ ํ๋ฉด์ ์ ๋ ฌ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- 2๊ฐ์ ๋ ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉด์ ์ด๋ ํ์ชฝ์ด ๋ ์์ ๊ฒฝ์ฐ ํฐ ๊ฐ๊ณผ ์๋ก ๊ตํ(Swap)์ ํ๋ค.
๋ฒ๋ธ ์ ๋ ฌ ๋์ ๊ณผ์ ์ง์ ๋์ผ๋ก ํ์ธํ๊ธฐ
๋ณด๋ ๊ฒ์ฒ๋ผ ์ฌ์ดํด(ํ์ )์ด ์์๋๋ฉด
1. ๋งจ ์์ ๋๊ฐ์ ์์๋ผ๋ฆฌ ์๋ก ํฌ๊ธฐ๋ฅผ ๋น๊ตํด์ ๋ ์์ ๊ฐ์ ์ผ์ชฝ์ผ๋ก ์ด๋(๊ตํ) ์ํด.
2. ๊ทธ ๋ค์ ๋นจ๊ฐ ๋ฐ์ค๋ฅผ +1 ์ฆ๊ฐ ์์ผ์ ๋ฐฉ๊ธ ๋น๊ตํ ํฐ ๊ฐ๊ณผ ๋ฐ๋ก ์์ ์์์ ๋ ๋น๊ตํ ์ค์
๊ทธ๋ฌ๋ฉด ์ต์ข ์ ์ผ๋ก ๊ฐ์ด ๊ฐ์ฅ ํฐ 8์ด ๋ฐฐ์ด์ ๋งจ ๋์ชฝ์ ์์นํ๊ฒ ๋๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ ๋ฐ๋ก 1ํ์ ์ด๊ณ ์ด๋ฐ ํ์ ์ ๋ฐ๋ณตํ๋ค.
์ฃผ์์ฌํญ
์ด๋ฏธ ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ธ 8์ด ๋งจ ์ค๋ฅธ์ชฝ์ ์์นํด ์๊ธฐ ๋๋ฌธ์ ๋ ๋ค์ ๋นจ๊ฐ ๋ฐ์ค๋ฅผ ๊ตณ์ด ๋งจ ๋๊น์ง ๊ฐ์ 8๊ณผ ๋น๊ตํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด์
ํ ์ฌ์ดํด์ด ๋๋ ๋๋ง๋ค ๋น๊ตํ๋ ํ์๊ฐ N-1์ฉ ์ค์ด๋ค๊ฒ ํด์ฃผ๋๊ฒ ์ค์ํ๋ค.
5 3 1 6 7 2 4 8
3 1 5 6 2 4 7 8
1 3 5 2 4 6 7 8
...
1 2 3 4 5 6 7 8
์ ๋นจ๊ฐ ์ซ์๋ค์ ๋์ด์ ๋น๊ตํ ํ์๊ฐ ์๋ค๋ ์๋ฏธ์ด๋ค.
#include <stdio.h>
#define SWAP(a,b){int t; t=a; a=b; b=t;}
int main() {
int numbers[] = { 9, 2, 5, 6, 8, 1, 4, 7, 3 };
for(int i=sizeof( numbers )/4; i>0; i--){
for( int j=0; j<i; j++ ){
if( numbers[j] > numbers[j+1] ){
printf("numbers[j]: %d | numbers[j+1]: %d\n", numbers[j], numbers[j+1]);
SWAP( numbers[j], numbers[j+1]);
}
}
printf("\n");
}
printf("๊ฒฐ๊ณผ: ");
// ๋ชจ๋ ์ถ๋ ฅ
for(int i=0; i<sizeof( numbers )/4; i++){
printf("%d ", numbers[i]);
}
return 0;
}
[์ถ๋ ฅ]
numbers[j]: 9 | numbers[j+1]: 2
numbers[j]: 9 | numbers[j+1]: 5
numbers[j]: 9 | numbers[j+1]: 6
numbers[j]: 9 | numbers[j+1]: 8
numbers[j]: 9 | numbers[j+1]: 1
numbers[j]: 9 | numbers[j+1]: 4
numbers[j]: 9 | numbers[j+1]: 7
numbers[j]: 9 | numbers[j+1]: 3
numbers[j]: 8 | numbers[j+1]: 1
numbers[j]: 8 | numbers[j+1]: 4
numbers[j]: 8 | numbers[j+1]: 7
numbers[j]: 8 | numbers[j+1]: 3
numbers[j]: 6 | numbers[j+1]: 1
numbers[j]: 6 | numbers[j+1]: 4
numbers[j]: 7 | numbers[j+1]: 3
numbers[j]: 5 | numbers[j+1]: 1
numbers[j]: 5 | numbers[j+1]: 4
numbers[j]: 6 | numbers[j+1]: 3
numbers[j]: 2 | numbers[j+1]: 1
numbers[j]: 5 | numbers[j+1]: 3
numbers[j]: 4 | numbers[j+1]: 3
๊ฒฐ๊ณผ: 1 2 3 4 5 6 7 8 9
์์ํ๋ฉด์ ์ธ๋งํ ํ
์์ ์์ค์ฒ๋ผ
C์ธ์์ ๊ฐ๋จํ SWAP ํจ์๋ฅผ ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๋งคํฌ๋ก ํจ์๋ฅผ ์ฝ๋์ ์๋จ์ ์ ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
#define SWAP(a,b){int t; t=a; a=b; b=t;}
๋ํ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์์๋ด๊ณ ์ถ์ผ๋ฉด sizeof ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
sizeof(arr) / 4
ํน์
sizeof(arr) / sizeof(int)
sizeof๋ ๋ณ์์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ ธ์์ฃผ๋ ํจ์์ด๋ฉฐ, ๋ฐฐ์ด์์ ๋ณ์ ๊ฐ์ x ํ์ ์ ์ฌ์ด์ฆ๋ก ์ถ๋ ฅ์ด ๋๋ค.
์ฌ๊ธฐ์๋ ํ์ ์ ์ฌ์ด์ฆ๋ ํ์๊ฐ ์์ผ๋ / sizeof(ํ์ )์ ์ ์ด์ค ๊ฒ์ด๋ค.
'๐๊ณต๋ถ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ - ํ์ผ 1ํ ์ต๋ ์ ๋ก๋ ์ ํ ํ์ ๋ถํ ํด์ ๋ณด๋ด๊ธฐ (0) | 2023.08.17 |
---|---|
์๊ณ ๋ฆฌ์ฆ - ์ฐ์์ ์ธ ์์ด์ธ์ง ํ์ธํ๊ธฐ (0) | 2023.08.15 |
์ ๋ ฌ - ํ(heap) ์ ๋ ฌ ๋น์ฃผ์ผํ (0) | 2023.05.18 |
์๊ณ ๋ฆฌ์ฆ - ํ์ด์ฌ for ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฆฌ์คํธ ์์ฑํ๊ธฐ (0) | 2021.11.22 |
์๊ณ ๋ฆฌ์ฆ - ํผ๋ณด๋์น ์์ด (0) | 2021.11.22 |