๐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ธ๊ณ๋ก ํ๋ฉ! ๐โโ๏ธ

์๋ ํ์ธ์, ์ฝ๋ฉ ๊ฟ๋๋ฌด๋ค! ์ค๋์ ์ ๋ง ์ฌ๋ฐ๊ณ ์ ์ฉํ ์ฃผ์ ๋ก ์ฌ๋ฌ๋ถ๊ณผ ํจ๊ป ๋ฌ๋ ค๋ณผ ๊ฑฐ์์. ๋ฐ๋ก ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณผ ๊ฑด๋ฐ์. ํนํ ๋ฒ๋ธ ์ ๋ ฌ, ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ ์ด ์ธ ๊ฐ์ง๋ฅผ ์ง์ค์ ์ผ๋ก ํํค์ณ ๋ณผ ๊ฑฐ์์. ์ด๊ฑฐ ์์ ๊ฟ์ผ ์๋๊ฒ ์ด์? ใ ใ ใ
์ฌ๋ฌ๋ถ, ํน์ '์ ๋ ฌ'์ด๋ผ๋ ๋จ์ด๋ฅผ ๋ค์ผ๋ฉด ๋ญ๊ฐ ๋ ์ค๋ฅด๋์? ์ฑ ์ฅ์ ์ฑ ์ ํค ์์๋๋ก ๊ฝ๋๋ค๋ ์ง, ์ท์ฅ์ ์ท์ ์๊น๋ณ๋ก ์ ๋ฆฌํ๋ค๋ ์ง ํ๋ ์ผ์์ ์ธ ์ผ๋ค์ด ๋ ์ค๋ฅด์ง ์๋์? ๊ทธ๋ ๋ค๋ฉด ์ถํ๋๋ ค์! ์ฌ๋ฌ๋ถ์ ์ด๋ฏธ ์ ๋ ฌ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๊ณ ๊ณ์ ๊ฑฐ์์. ๐๐๐
ํ๋ก๊ทธ๋๋ฐ์์์ ์ ๋ ฌ๋ ์ด์ ๋น์ทํด์. ๋ฐ์ดํฐ๋ฅผ ํน์ ํ ์์๋๋ก ๋ฐฐ์ดํ๋ ๊ฒ์ ๋งํ์ฃ . ๊ทธ๋ฐ๋ฐ ์ ์ด๋ฐ ์ ๋ ฌ์ด ์ค์ํ ๊น์? ๐ค
์ ๋ ฌ์ ์ค์์ฑ:
- ๋ฐ์ดํฐ ๊ฒ์ ์๋ ํฅ์ ๐
- ๋ฐ์ดํฐ ๊ตฌ์กฐํ ๋ฐ ์ ๋ฆฌ ๐
- ์๊ณ ๋ฆฌ์ฆ ํจ์จ์ฑ ์ฆ๋ ๐
- ์๊ฐ์ ๋ฐ์ดํฐ ํํ ๊ฐ์ ๐ผ๏ธ
์ค๋ ์ฐ๋ฆฌ๊ฐ ์์๋ณผ ์ธ ๊ฐ์ง ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ์ด๋ณด์๋ค์ด ์ฝ๊ฒ ์ดํดํ ์ ์๋ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด์์. ํ์ง๋ง ์ด ๊ธฐ๋ณธ์ ์ ๋๋ก ์ดํดํ๋ฉด, ๋์ค์ ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ธ ๋๋ ํจ์ฌ ์์ํ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ๊ธฐ์ด ํ๋ก๊ทธ๋๋ฐ ๊ฐ์๋ฅผ ๋ค์ ํ์ ๊ณ ๊ธ ๊ณผ์ ์ผ๋ก ๋์ด๊ฐ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ ! ๐
์, ๊ทธ๋ผ ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณผ๊น์? ์ค๋น๋์ จ๋์? 3, 2, 1... ์ถ๋ฐ! ๐
๐ซง ๋ฒ๋ธ ์ ๋ ฌ (Bubble Sort): ๋ฐฉ์ธ๋ฐฉ์ธ ์ฌ๋ผ๊ฐ์! ๐ซง
์ฒซ ๋ฒ์งธ๋ก ์์๋ณผ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ก ๋ฒ๋ธ ์ ๋ ฌ์ด์์. ์ด๋ฆ๋ถํฐ ๊ท์ฝ์ฃ ? ใ ใ ใ ์ค์ ๋ก ๋์ ๋ฐฉ์๋ ์ด๋ฆ์ฒ๋ผ ๊ท์ฌ์์!
๋ฒ๋ธ ์ ๋ ฌ์ ๋ง์น ๋ฌผ์์์ ๊ฑฐํ์ด ์ฌ๋ผ์ค๋ ๊ฒ์ฒ๋ผ ์๋ํด์. ํฐ ์ซ์๊ฐ ๊ฑฐํ์ฒ๋ผ ์๋ก ์ฌ๋ผ๊ฐ๋ ๋ชจ์ต์ ์์ํด๋ณด์ธ์. ๊ทธ๋์ '๋ฒ๋ธ(๊ฑฐํ)' ์ ๋ ฌ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฑฐ์์! ๐
๋ฒ๋ธ ์ ๋ ฌ์ ๊ธฐ๋ณธ ์๋ฆฌ:
- ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์ํด์.
- ํ์ฌ ์์์ ๋ค์ ์์๋ฅผ ๋น๊ตํด์.
- ํ์ฌ ์์๊ฐ ๋ค์ ์์๋ณด๋ค ํฌ๋ค๋ฉด ๋ ์์์ ์์น๋ฅผ ๋ฐ๊ฟ์.
- ๋ฐฐ์ด์ ๋๊น์ง ์ด ๊ณผ์ ์ ๋ฐ๋ณตํด์.
- 1~4 ๊ณผ์ ์ ๋ฐฐ์ด์ด ์์ ํ ์ ๋ ฌ๋ ๋๊น์ง ๋ฐ๋ณตํด์.
์ดํด๊ฐ ์ ์ ๋์๋์? ๊ฑฑ์ ๋ง์ธ์! ์ฐ๋ฆฌ ํจ๊ป ์์๋ฅผ ํตํด ์์ธํ ์์๋ณผ๊ฒ์. ๐ค
์๋ฅผ ๋ค์ด, [5, 3, 8, 4, 2]๋ผ๋ ๋ฐฐ์ด์ด ์๋ค๊ณ ํด๋ณผ๊น์?
์, ์ด์ ๋ฒ๋ธ ์ ๋ ฌ์ ๊ฐ ๋จ๊ณ๋ฅผ ํ๋์ฉ ์ดํด๋ณผ๊ฒ์!
- ์ฒซ ๋ฒ์งธ ํจ์ค:
- 5์ 3์ ๋น๊ตํด์. 5 > 3์ด๋ฏ๋ก ๊ตํํด์. [3, 5, 8, 4, 2]
- 5์ 8์ ๋น๊ตํด์. 5 < 8์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 5, 8, 4, 2]
- 8๊ณผ 4๋ฅผ ๋น๊ตํด์. 8 > 4์ด๋ฏ๋ก ๊ตํํด์. [3, 5, 4, 8, 2]
- 8๊ณผ 2๋ฅผ ๋น๊ตํด์. 8 > 2์ด๋ฏ๋ก ๊ตํํด์. [3, 5, 4, 2, 8]
- ๋ ๋ฒ์งธ ํจ์ค:
- 3๊ณผ 5๋ฅผ ๋น๊ตํด์. 3 < 5์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 5, 4, 2, 8]
- 5์ 4๋ฅผ ๋น๊ตํด์. 5 > 4์ด๋ฏ๋ก ๊ตํํด์. [3, 4, 5, 2, 8]
- 5์ 2๋ฅผ ๋น๊ตํด์. 5 > 2์ด๋ฏ๋ก ๊ตํํด์. [3, 4, 2, 5, 8]
- 5์ 8์ ๋น๊ตํด์. 5 < 8์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 4, 2, 5, 8]
- ์ธ ๋ฒ์งธ ํจ์ค:
- 3๊ณผ 4๋ฅผ ๋น๊ตํด์. 3 < 4์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 4, 2, 5, 8]
- 4์ 2๋ฅผ ๋น๊ตํด์. 4 > 2์ด๋ฏ๋ก ๊ตํํด์. [3, 2, 4, 5, 8]
- 4์ 5๋ฅผ ๋น๊ตํด์. 4 < 5์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 2, 4, 5, 8]
- 5์ 8์ ๋น๊ตํด์. 5 < 8์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 2, 4, 5, 8]
- ๋ค ๋ฒ์งธ ํจ์ค:
- 3๊ณผ 2๋ฅผ ๋น๊ตํด์. 3 > 2์ด๋ฏ๋ก ๊ตํํด์. [2, 3, 4, 5, 8]
- 3๊ณผ 4๋ฅผ ๋น๊ตํด์. 3 < 4์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [2, 3, 4, 5, 8]
- 4์ 5๋ฅผ ๋น๊ตํด์. 4 < 5์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [2, 3, 4, 5, 8]
- 5์ 8์ ๋น๊ตํด์. 5 < 8์ด๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [2, 3, 4, 5, 8]
์! ์ด๋ ๊ฒ ํด์ ์ฐ๋ฆฌ์ ๋ฐฐ์ด์ด ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋์์ด์! ๐๐๐
์ด์ ๋ฒ๋ธ ์ ๋ ฌ์ C ์ธ์ด๋ก ๊ตฌํํด๋ณผ๊น์? ์ฌ๋ฌ๋ถ๋ ๋ฐ๋ผ ํด๋ณด์ธ์!
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// ๋ ์์ ๊ตํ
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("์ ๋ ฌ ์ ๋ฐฐ์ด: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
bubbleSort(arr, n);
printf("์ ๋ ฌ ํ ๋ฐฐ์ด: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์:
์ ๋ ฌ ์ ๋ฐฐ์ด: 5 3 8 4 2
์ ๋ ฌ ํ ๋ฐฐ์ด: 2 3 4 5 8
์ง์! ๐ ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ฒ๋ธ ์ ๋ ฌ์ ๊ตฌํํด๋ดค์ด์. ์ด๋์? ์๊ฐ๋ณด๋ค ์ด๋ ต์ง ์์ฃ ?
๋ฒ๋ธ ์ ๋ ฌ์ ํน์ง:
- ๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํด์. ์ด๋ณด์๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ฃ !
- ์์ ์ ๋ ฌ์ด์์. ๊ฐ์ ๊ฐ์ ์์๋ค์ ์๋์ ์์๊ฐ ์ ์ง๋ผ์.
- ์ ์๋ฆฌ ์ ๋ ฌ์ด์์. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฑฐ์ ํ์ ์์ด์.
- ํ์ง๋ง... ํจ์จ์ฑ์ ์ข ๋จ์ด์ ธ์. ๐ ํฐ ๋ฐ์ดํฐ์ ์๋ ์ ํฉํ์ง ์์์.
๋ฒ๋ธ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ ์ด๋ป๊ฒ ๋ ๊น์? ๐ค
- ์ต์ ์ ๊ฒฝ์ฐ: O(n^2)
- ํ๊ท ์ ๊ฒฝ์ฐ: O(n^2)
- ์ต์ ์ ๊ฒฝ์ฐ: O(n) (์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ)
์ฌ๊ธฐ์ n์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์๋ฏธํด์. O(n^2)์ด๋ผ๋ ๊ฑด, ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ ๋ ฌ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๋ค๋ ๋ป์ด์์. ๊ทธ๋์ ํฐ ๋ฐ์ดํฐ์ ์๋ ์ ํฉํ์ง ์๋ค๊ณ ํ๋ ๊ฑฐ์ฃ !
ํ์ง๋ง ๊ฑฑ์ ๋ง์ธ์. ๋ฒ๋ธ ์ ๋ ฌ์ ๋นํจ์จ์ ์ด๋ผ๊ณ ํด์ ์์ ํ ์ธ๋ชจ์๋ ๊ฑด ์๋์์. ์คํ๋ ค ๊ต์ก์ฉ์ผ๋ก๋ ์์ฃผ ์ข๋ต๋๋ค. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๋ฐ ํฐ ๋์์ด ๋๊ฑฐ๋ ์. ๋ง์น ์ฌ๋ฅ๋ท์์ ๊ธฐ์ด ํ๋ก๊ทธ๋๋ฐ ๊ฐ์๋ฅผ ๋ค์ ๋, ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค๋ ์ด๋ฐ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ๋ถํฐ ์์ํ๋ ๊ฒ์ฒ๋ผ์! ๐
์, ์ด์ ๋ฒ๋ธ ์ ๋ ฌ์ ๋ํด ๊ฝค ๋ง์ด ์๊ฒ ๋์ จ์ฃ ? ๋ค์์ผ๋ก๋ ์ ํ ์ ๋ ฌ์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ์ค๋น๋์ จ๋์? ๊ณ ๊ณ ! ๐
๐ฏ ์ ํ ์ ๋ ฌ (Selection Sort): ๊ณจ๋ผ๊ณจ๋ผ ์์! ๐ฏ
์, ์ด์ ์ฐ๋ฆฌ์ ๋ ๋ฒ์งธ ์ฃผ์ธ๊ณต์ธ ์ ํ ์ ๋ ฌ์ ๋ง๋๋ณผ ์๊ฐ์ด์์! ์ ํ ์ ๋ ฌ์ ๋ง ๊ทธ๋๋ก '์ ํ'ํด์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ด์์. ์ด๋ป๊ฒ ์ ํํ๋๊ณ ์? ๊ทธ๊ฑด ์ง๊ธ๋ถํฐ ์์๋ณผ ๊ฑฐ์์! ใ ใ
์ ํ ์ ๋ ฌ์ ๋ง์น ์ด๋ํ์์ ํค ์์๋๋ก ์ค ์๋ ๊ฒ๊ณผ ๋น์ทํด์. ๊ฐ์ฅ ์์ ์น๊ตฌ๋ฅผ ์ฐพ์ ๋งจ ์์ผ๋ก ๋ณด๋ด๊ณ , ๊ทธ ๋ค์ ์์ ์น๊ตฌ๋ฅผ ์ฐพ์ ๋ ๋ฒ์งธ๋ก ๋ณด๋ด๊ณ ... ์ด๋ฐ ์์ผ๋ก ๊ณ์ ๋ฐ๋ณตํ๋ ๊ฑฐ์ฃ ! ๐ซ๐ซ๐ซ
์ ํ ์ ๋ ฌ์ ๊ธฐ๋ณธ ์๋ฆฌ:
- ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ฐพ์์.
- ๊ทธ ์์๋ฅผ ๋งจ ์์ ์์์ ๊ตํํด์.
- ๋งจ ์์ ์์๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฐฐ์ด์ ๋ํด 1, 2๋ฒ ๊ณผ์ ์ ๋ฐ๋ณตํด์.
- ๋ฐฐ์ด์ ๋ชจ๋ ์์๊ฐ ์ ๋ ฌ๋ ๋๊น์ง ์ด ๊ณผ์ ์ ๊ณ์ํด์.
์... ์์ง๋ ์ข ์ด๋ ต๊ฒ ๋๊ปด์ง๋์? ๊ด์ฐฎ์์! ์ฐ๋ฆฌ ํจ๊ป ์์๋ฅผ ํตํด ๋ ์์ธํ ์์๋ณผ๊ฒ์. ๐
์ด๋ฒ์๋ [5, 3, 8, 4, 2]๋ผ๋ ๋ฐฐ์ด๋ก ์์ํด๋ณผ๊น์?
์, ์ด์ ์ ํ ์ ๋ ฌ์ ๊ฐ ๋จ๊ณ๋ฅผ ํ๋์ฉ ์ดํด๋ณผ๊ฒ์!
- ์ฒซ ๋ฒ์งธ ํจ์ค:
- ์ ์ฒด ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๊ฐ 2๋ฅผ ์ฐพ์์.
- 2๋ฅผ ์ฒซ ๋ฒ์งธ ์์น์ 5์ ๊ตํํด์. [2, 3, 8, 4, 5]
- ๋ ๋ฒ์งธ ํจ์ค:
- ๋จ์ [3, 8, 4, 5] ์ค์์ ๊ฐ์ฅ ์์ ๊ฐ 3์ ์ฐพ์์.
- 3์ ์ด๋ฏธ ๋ ๋ฒ์งธ ์์น์ ์์ผ๋ฏ๋ก ๊ตํํ์ง ์์์. [2, 3, 8, 4, 5]
- ์ธ ๋ฒ์งธ ํจ์ค:
- ๋จ์ [8, 4, 5] ์ค์์ ๊ฐ์ฅ ์์ ๊ฐ 4๋ฅผ ์ฐพ์์.
- 4๋ฅผ ์ธ ๋ฒ์งธ ์์น์ 8๊ณผ ๊ตํํด์. [2, 3, 4, 8, 5]
- ๋ค ๋ฒ์งธ ํจ์ค:
- ๋จ์ [8, 5] ์ค์์ ๊ฐ์ฅ ์์ ๊ฐ 5๋ฅผ ์ฐพ์์.
- 5๋ฅผ ๋ค ๋ฒ์งธ ์์น์ 8๊ณผ ๊ตํํด์. [2, 3, 4, 5, 8]
- ๋ค์ฏ ๋ฒ์งธ ํจ์ค:
- ๋ง์ง๋ง ์์ 8๋ง ๋จ์์ผ๋ฏ๋ก ๋ ์ด์ ๊ตํํ ํ์๊ฐ ์์ด์.
์ง์! ๐ ์ด๋ ๊ฒ ํด์ ์ฐ๋ฆฌ์ ๋ฐฐ์ด์ด ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋์์ด์!
์ด์ ์ ํ ์ ๋ ฌ์ C ์ธ์ด๋ก ๊ตฌํํด๋ณผ๊น์? ์ฌ๋ฌ๋ถ๋ ๋ฐ๋ผ ํด๋ณด์ธ์!
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, min_idx, temp;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx])
min_idx = j;
}
// ์ต์๊ฐ์ ์ฐพ์ ํ ๊ตํ
temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("์ ๋ ฌ ์ ๋ฐฐ์ด: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
selectionSort(arr, n);
printf("์ ๋ ฌ ํ ๋ฐฐ์ด: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์:
์ ๋ ฌ ์ ๋ฐฐ์ด: 5 3 8 4 2
์ ๋ ฌ ํ ๋ฐฐ์ด: 2 3 4 5 8
์์ฐ! ๐ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ ํ ์ ๋ ฌ์ ๊ตฌํํด๋ดค์ด์. ์ด๋์? ๋ฒ๋ธ ์ ๋ ฌ๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅธ ๋๋์ด์ฃ ?
์ ํ ์ ๋ ฌ์ ํน์ง:
- ๊ตฌํ์ด ๊ฐ๋จํด์. ๋ฒ๋ธ ์ ๋ ฌ๋งํผ์ด๋ ์ดํดํ๊ธฐ ์ฝ์ฃ !
- ๋ถ์์ ์ ๋ ฌ์ด์์. ๊ฐ์ ๊ฐ์ ์์๋ค์ ์๋์ ์์๊ฐ ๋ฐ๋ ์ ์์ด์.
- ์ ์๋ฆฌ ์ ๋ ฌ์ด์์. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฑฐ์ ํ์ ์์ด์.
- ๋ฒ๋ธ ์ ๋ ฌ๋ณด๋ค๋ ์กฐ๊ธ ๋ ํจ์จ์ ์ด์์. ํ์ง๋ง ์ฌ์ ํ ํฐ ๋ฐ์ดํฐ์ ์๋ ์ ํฉํ์ง ์์์. ๐
์ ํ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ ์ด๋ป๊ฒ ๋ ๊น์? ๐ค
- ์ต์ ์ ๊ฒฝ์ฐ: O(n^2)
- ํ๊ท ์ ๊ฒฝ์ฐ: O(n^2)
- ์ต์ ์ ๊ฒฝ์ฐ: O(n^2)
๋ฒ๋ธ ์ ๋ ฌ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ ์ ๋ ฌ๋ O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ์. ํ์ง๋ง ์ ํ ์ ๋ ฌ์ ๋ฒ๋ธ ์ ๋ ฌ๊ณผ ๋ฌ๋ฆฌ ์ต์ ์ ๊ฒฝ์ฐ์๋ O(n^2)์ด์์. ์๋ํ๋ฉด ๋งค ํจ์ค๋ง๋ค ์ ์ฒด ๋ฐฐ์ด์ ํ์ด๋ณด๋ฉด์ ์ต์๊ฐ์ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ์ด์ฃ .
๊ทธ๋ ๋ค๋ฉด ์ ํ ์ ๋ ฌ์ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น์? ๐ง
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ํ์ ์ผ ๋: ์ ํ ์ ๋ ฌ์ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์์.
- ์์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ์ ๋ ฌํ ๋: ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด๋ผ ์์ ๋ฐ์ดํฐ์ ์ ์ ํฉํด์.
- ๊ตํ ํ์๋ฅผ ์ต์ํํ๊ณ ์ถ์ ๋: ์ ํ ์ ๋ ฌ์ ๋ฒ๋ธ ์ ๋ ฌ์ ๋นํด ๊ตํ ํ์๊ฐ ์ ์ด์.
์ฌ๋ฅ๋ท์์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๋ ์ด๋ณด์๋ค์๊ฒ ์ ํ ์ ๋ ฌ์ ์ ๋ง ์ข์ ํ์ต ์ฃผ์ ์์. ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๊ณ , ์ฝ๋๋ก ๊ตฌํํ๋ ์ฐ์ต์ ํ๊ธฐ์ ๋ฑ ์ข๊ฑฐ๋ ์. ๐
์, ์ด์ ์ ํ ์ ๋ ฌ์ ๋ํด์๋ ๊ฝค ๋ง์ด ์๊ฒ ๋์ จ์ฃ ? ๋ค์์ผ๋ก๋ ๋ง์ง๋ง์ผ๋ก ์ฝ์ ์ ๋ ฌ์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ์ค๋น๋์ จ๋์? ๋ฌ๋ ค๊ฐ์๋ค! ๐โโ๏ธ๐จ
๐ ์ฝ์ ์ ๋ ฌ (Insertion Sort): ์นด๋ ์ ๋ฆฌ์ ๋ฌ์ธ! ๐
๋๋์ด ์ฐ๋ฆฌ์ ๋ง์ง๋ง ์ฃผ์ธ๊ณต, ์ฝ์ ์ ๋ ฌ์ ๋ง๋๋ณผ ์๊ฐ์ด์์! ์ฝ์ ์ ๋ ฌ์ ์ด๋ฆ ๊ทธ๋๋ก '์ฝ์ 'ํ๋ฉด์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ด์์. ์ด๋ป๊ฒ ์ฝ์ ํ๋๊ณ ์? ๊ทธ๊ฑด ์ง๊ธ๋ถํฐ ์์๋ณผ ๊ฑฐ์์! ๐
์ฝ์ ์ ๋ ฌ์ ๋ง์น ์นด๋ ๊ฒ์์ ํ๋ฉด์ ์์ ๋ ์นด๋๋ฅผ ์ ๋ฆฌํ๋ ๊ฒ๊ณผ ๋น์ทํด์. ์๋ก์ด ์นด๋๋ฅผ ๋ฐ์ ๋๋ง๋ค ์ด๋ฏธ ์ ๋ ฌ๋ ์นด๋ ์ฌ์ด์ ์ ์ ํ ์์น์ ๋ฃ๋ ๊ฑฐ์ฃ . ์นด๋ ๊ฒ์ ์ข์ํ์๋ ๋ถ๋ค์ด๋ผ๋ฉด ์ด ๊ฐ๋ ์ด ๋ฑ ์๋ฟ์ ๊ฑฐ์์! ใ ใ ๐๐๐
์ฝ์ ์ ๋ ฌ์ ๊ธฐ๋ณธ ์๋ฆฌ:
- ๋ ๋ฒ์งธ ์์๋ถํฐ ์์ํด์.
- ํ์ฌ ์์๋ฅผ ์ด์ ์ ์ ๋ ฌ๋ ๋ถ๋ถ๊ณผ ๋น๊ตํด์.
- ์ ์ ํ ์์น๋ฅผ ์ฐพ์ ์ฝ์ ํด์.
- ๋ฐฐ์ด์ ๋๊น์ง ์ด ๊ณผ์ ์ ๋ฐ๋ณตํด์.
์... ์์ง๋ ์ข ์ถ์์ ์ผ๋ก ๋๊ปด์ง๋์? ๊ด์ฐฎ์์! ์ฐ๋ฆฌ ํจ๊ป ์์๋ฅผ ํตํด ๋ ์์ธํ ์์๋ณผ๊ฒ์. ๐
์ด๋ฒ์๋ [5, 3, 8, 4, 2]๋ผ๋ ๋ฐฐ์ด๋ก ์์ํด๋ณผ๊น์?
์, ์ด์ ์ฝ์ ์ ๋ ฌ์ ๊ฐ ๋จ๊ณ๋ฅผ ํ๋์ฉ ์ดํด๋ณผ๊ฒ์!
- ์ฒซ ๋ฒ์งธ ํจ์ค:
- 3์ 5์ ๋น๊ตํด์. 3 < 5์ด๋ฏ๋ก 3์ 5 ์์ผ๋ก ์ด๋ํด์. [3, 5, 8, 4, 2]
- ๋ ๋ฒ์งธ ํจ์ค:
- 8์ ์ด๋ฏธ ์ ๋ ฌ๋ [3, 5]๋ณด๋ค ํฌ๋ฏ๋ก ๊ทธ๋๋ก ๋ฌ์. [3, 5, 8, 4, 2]
- ์ธ ๋ฒ์งธ ํจ์ค:
- 4๋ฅผ 8, 5์ ๋น๊ตํด์. 4 < 8, 4 < 5์ด๋ฏ๋ก 4๋ฅผ 5 ์์ผ๋ก ์ด๋ํด์. [3, 4, 5, 8, 2]
- ๋ค ๋ฒ์งธ ํจ์ค:
- 2๋ฅผ 8, 5, 4, 3๊ณผ ๋น๊ตํด์. 2๊ฐ ๊ฐ์ฅ ์์ผ๋ฏ๋ก ๋งจ ์์ผ๋ก ์ด๋ํด์. [2, 3, 4, 5, 8]
์ง์! ๐ ์ด๋ ๊ฒ ํด์ ์ฐ๋ฆฌ์ ๋ฐฐ์ด์ด ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋์์ด์!
์ด์ ์ฝ์ ์ ๋ ฌ์ C ์ธ์ด๋ก ๊ตฌํํด๋ณผ๊น์? ์ฌ๋ฌ๋ถ๋ ๋ฐ๋ผ ํด๋ณด์ธ์!
#include <stdio.h>
void insertionSort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("์ ๋ ฌ ์ ๋ฐฐ์ด: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
insertionSort(arr, n);
printf("์ ๋ ฌ ํ ๋ฐฐ์ด: ");
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์:
์ ๋ ฌ ์ ๋ฐฐ์ด: 5 3 8 4 2
์ ๋ ฌ ํ ๋ฐฐ์ด: 2 3 4 5 8
์์ฐ! ๐ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ฝ์ ์ ๋ ฌ์ ๊ตฌํํด๋ดค์ด์. ์ด๋์? ๋ฒ๋ธ ์ ๋ ฌ, ์ ํ ์ ๋ ฌ๊ณผ๋ ๋ ๋ค๋ฅธ ๋๋์ด์ฃ ?
์ฝ์ ์ ๋ ฌ์ ํน์ง:
- ๊ตฌํ์ด ๊ฐ๋จํด์. ๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด ์ดํดํ๊ธฐ ์ฝ์ฃ !
- ์์ ์ ๋ ฌ์ด์์. ๊ฐ์ ๊ฐ์ ์์๋ค์ ์๋์ ์์๊ฐ ์ ์ง๋ผ์.
- ์ ์๋ฆฌ ์ ๋ ฌ์ด์์. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฑฐ์ ํ์ ์์ด์.
- ์์ ๋ฐ์ดํฐ์ ์ด๋ ๊ฑฐ์ ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ๋ํด ํจ์จ์ ์ด์์.
- ์จ๋ผ์ธ ์๊ณ ๋ฆฌ์ฆ์ด์์. ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ฒ๋ฆฌํ ์ ์์ด์.
์ฝ์ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ ์ด๋ป๊ฒ ๋ ๊น์? ๐ค
- ์ต์ ์ ๊ฒฝ์ฐ: O(n^2) (์ญ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ)
- ํ๊ท ์ ๊ฒฝ์ฐ: O(n^2)
- ์ต์ ์ ๊ฒฝ์ฐ: O(n) (์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ)
์ฝ์ ์ ๋ ฌ๋ ํ๊ท ์ ์ผ๋ก O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ์. ํ์ง๋ง ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ๋ํด์๋ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค๋ ๊ฒ ํน์ง์ด์์. ์ด ๋๋ฌธ์ ๊ฑฐ์ ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ๋ํด ๋งค์ฐ ํจ์จ์ ์ด๋๋๋ค!
๊ทธ๋ ๋ค๋ฉด ์ฝ์ ์ ๋ ฌ์ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น์? ๐ง
- ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์์ ๋: ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์ค๋ฒํค๋๊ฐ ์ ์ด์.
- ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์์ ๋: ์ด ๊ฒฝ์ฐ ๋งค์ฐ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ค์.
- ์จ๋ผ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ ๋: ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ฐ์ ์ ๋ ฌํ ์ ์์ด์.
์ฌ๋ฅ๋ท์์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๋ ์ฌ๋ฌ๋ถ์๊ฒ ์ฝ์ ์ ๋ ฌ์ ์ ๋ง ์ข์ ํ์ต ์ฃผ์ ์์. ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๊ณ , ์ค์ ๋ก ๊ตฌํํด๋ณด๋ฉด์ ํ๋ก๊ทธ๋๋ฐ ์ค๋ ฅ์ ํฅ์์ํฌ ์ ์๊ฑฐ๋ ์. ๐
์, ์ด์ ์ฐ๋ฆฌ๊ฐ ์์๋ณธ ์ธ ๊ฐ์ง ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋น๊ตํด๋ณผ๊น์?
์๊ณ ๋ฆฌ์ฆ | ์๊ฐ ๋ณต์ก๋ (ํ๊ท ) | ๊ณต๊ฐ ๋ณต์ก๋ | ์์ ์ฑ |
---|---|---|---|
๋ฒ๋ธ ์ ๋ ฌ | O(n^2) | O(1) | ์์ |
์ ํ ์ ๋ ฌ | O(n^2) | O(1) | ๋ถ์์ |
์ฝ์ ์ ๋ ฌ | O(n^2) | O(1) | ์์ |
์! ์ฐ๋ฆฌ๊ฐ ์ ๋ง ๋ง์ ๊ฒ์ ๋ฐฐ์ ๋ค์! ๐ ์ด ์ธ ๊ฐ์ง ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ฅผ ๋ค์ง๋ ๋ฐ ์ ๋ง ์ค์ํด์. ๋ง์น ์ฌ๋ฅ๋ท์์ ๊ธฐ์ด ํ๋ก๊ทธ๋๋ฐ ๊ฐ์๋ฅผ ๋ฃ๋ ๊ฒ์ฒ๋ผ, ์ด๋ฐ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ณ ๊ตฌํํด๋ณด๋ ๊ฒ์ด ์์ผ๋ก์ ํ๋ก๊ทธ๋๋ฐ ์ฌ์ ์ ํฐ ๋์์ด ๋ ๊ฑฐ์์.
์ฌ๋ฌ๋ถ, ์ด๋ ์ จ๋์? ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ธ๊ณ๋ก ํ๋ฉ ๋น ์ ธ๋ณด๋ ์ด๋ค๊ฐ์? ์ฒ์์๋ ์ด๋ ค์ ๋ณด์์ ์๋ ์์ง๋ง, ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ์์๊ฐ๋ค ๋ณด๋ ๊ทธ๋ฆฌ ์ด๋ ต์ง๋ง์ ์์์ฃ ? ๐
๊ธฐ์ตํ์ธ์! ํ๋ก๊ทธ๋๋ฐ์ ์ฐ์ต์ด ํต์ฌ์ด์์. ์ด๋ก ๋ง ์๊ณ ์๋ ๊ฒ๋ณด๋ค๋ ์ง์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ณ , ์คํํด๋ณด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด๋ ๊ฒ์ด ์ค์ํด์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์ค์ต ๊ณผ์ ๋ฅผ ํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ !
์ฌ๋ฌ๋ถ์ ์ฝ๋ฉ ์ค๋ ฅ์ด ๋ ๋ก ๋ฐ์ ํ๊ธธ ๋ฐ๋ผ๋ฉฐ, ๋ค์์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๋ก ๋ง๋์! ํ์ดํ ! ๐ช๐
- ์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ฌ๋ฅ๋ท์ ์ต์ AI ๊ธฐ์ ๊ณผ ๋ฒ๋ฅ ์ ๊ธฐ๋ฐํ์ฌ ์์ฌ์ ์ง์ ์ฌ์ฐ๊ถ์ ์ ๊ทน์ ์ผ๋ก ๋ณดํธํ๋ฉฐ,
๋ฌด๋จ ์ฌ์ฉ ๋ฐ ์นจํด ํ์์ ๋ํด ๋ฒ์ ๋์์ ํ ๊ถ๋ฆฌ๋ฅผ ๋ณด์ ํฉ๋๋ค.
ยฉ 2025 ์ฌ๋ฅ๋ท | All rights reserved.
๋๊ธ 0๊ฐ