[์๊ณ ๋ฆฌ์ฆ] ๋ฒ๋ธ ์ ๋ ฌ ๊ตฌํ (c์ธ์ด)
๐ฟ๋ฒ๋ธ ์ ๋ ฌ์ด๋?
๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ด๋ฉฐ, ์ธ์ ํ ๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉฐ ๊ตํํ๋ค.
2์ค for๋ฌธ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
๐ฟ์๋ ๋ฐฉ์
ํธ์์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช !
- ์ฒซ ๋ฃจํ์์
1๋ฒ์งธ์ 2๋ฒ์งธ ๋น๊ต ํ ๊ตํ
2๋ฒ์งธ์ 3๋ฒ์งธ ๋น๊ต ํ ๊ตํ
.
.
size-1๋ฒ์งธ์ size๋ฒ์ฌ ๋น๊ตํ ๊ตํ
์ด๋ฌ๋ฉด ์ต๋๊ฐ์ด ๋งจ๋ค์ ํ๋ ์ฎ๊ฒจ์ง๊ฒ ๋๋ค.
- ๋๋ฒ์งธ ๋ฃจํ์์
1๋ฒ์งธ์ 2๋ฒ์งธ ๋น๊ต ํ ๊ตํ
2๋ฒ์งธ์ 3๋ฒ์งธ ๋น๊ต ํ ๊ตํ
.
.
size-2๋ฒ์งธ์ size-1๋ฒ์ฌ ๋น๊ตํ ๊ตํ
์ญ์ ๋งจ๋ค - 1 ๋ฒ์งธ์ ์ต๋๊ฐ์ด ์ฎ๊ฒจ์ง๋ค.
- ์ ๊ณผ์ ๋ฐ๋ณต!!
โญ๊ทธ๋ฆผ์ ํตํด ์ดํดํด ๋ณด์
์ฌ๊ธฐ์ ์ค์ํ๊ฑด [i]์ [i+1]๋ฒ์งธ ๋น๊ต์[ i+1]์ ๊ฐ์ด ๋ ์์๋ ๊ตํ์ ํด์ค๋ค๋ ๊ฒ์ด๋ค.
๋ง์ฝ ๋ ํด ๋ ๊ตํ์ ํด์ค๋ค๋ฉด?!
์ต์๊ฐ์ด ๋งจ ๋ค๋ก ๊ฐ๋ฏ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด ์์ฑ๋๋ค.
๐ฟ์ฝ๋
#include <stdio.h>
void bubble_sort(int* arr, int size) {
for (int i = size-1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main()
{
int arr[5] = { 5, 3, 4, 2, 1 };
printf("์ ๋ ฌ ์ \n");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
bubble_sort(arr, 5);
printf("\n์ ๋ ฌ ํ\n");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
}
๐ฟ์คํ