๋ฒ๋ธ ์ ๋ ฌ
๋ฒ๋ธ์ ๋ ฌ์ ํ์ฌ ์์์ ๋ค์ ์์๋ฅผ ๋น๊ตํ์ฌ ์กฐ๊ฑด์ ๋ง์ผ๋ฉด ๊ตํํ๋ ์์ ์ ๋ ฌ์ด๋ค.
์์๊ฐ ๊ฑฐํ์ฒ๋ผ ์ฌ๋ผ์ค๋ ๋ฏํ์ฌ ๋ฒ๋ธ์ ๋ ฌ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฒ์ 7๊ณผ 5๋ฅผ ๋น๊ตํ์ฌ 7์ด ๋ ํฌ๋ฏ๋ก ์์น๋ฅผ ๋ฐ๊พผ๋ค. ์ดํ ๋ฐฐ์ด์ ๋๊น์ง ๋น๊ตํด์ ๊ฐ์ด ๋ ํฌ๋ค๋ฉด ์์น๋ฅผ ๋ฐ๊พผ๋ค.
๋ค์ 5์ 1์ ๋น๊ตํด 5๊ฐ ๋ ํฌ๋ฏ๋ก ์์น๋ฅผ ๋ฐ๊ฟ์ค๋ค. ์ด๋ฒ์ ์ ๋ ฌ์ด ๋๋ 7 ์ ๊น์ง๋ง ํด๋น ๊ณผ์ ์ ๋ฐ๋ณต ํด์ค๋ค.
๋ค์ 1๊ณผ 4๋ฅผ ๋น๊ตํ์ฌ 1์ด ๋ ์์ผ๋ฏ๋ก ์์น๋ฅผ ๋ฐ๊พธ์ง์๋๋ค.
์ดํ 4์ 3์ ๋น๊ตํ์ ๋ 4๊ฐ ๋ ํฌ๋ฏ๋ก ์์น๋ฅผ ๋ฐ๊ฟ์ค๋ค.
1๊ณผ 3์ ๋น๊ตํ์ฌ 1์ด ๋ ์์ผ๋ฏ๋ก ์์น๋ฅผ ๋ฐ๊พธ์ง ์๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ฒ๋ธ์ ๋ ฌ์ด ์๋ฃ๋๋ค.
๋ฒ๋ธ์ ๋ ฌ์ ํน์ง
- ๋ฒ๋ธ์ ๋ ฌ์ ํ๋์ ๋ฐฐ์ด์์ ๊ฐ์ ๋ฐ๊พธ๋ ์์ผ๋ก ๋์ํ๋ฏ๋ก ๊ณต๊ฐ๋ณต์ก๋๋ O(1)์ด๋ค. ์ ํ์ ๋ ฌ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก SWAPํ ๋ ํ์ํ ์์๋ณ์ ์ ๋์ ์ถ๊ฐ๊ณต๊ฐ๋ง ์์ผ๋ฉด ๋๋ฏ๋ก IN-PLACE ์ ๋ ฌ์ด๋ค.
- (N-1), (N-2) ... 1๋ฒ์ ํ์์ด ํ์ํ๋ฏ๋ก
์๊ฐ๋ณต์ก๋๋ O(N^2)์ด๋ค. - ๋ฒ๋ธ์ ๋ ฌ์ ์ค๋ณต๋ ํค ๊ฐ์ ์์๊ฐ ์ ๋ ฌ ํ์๋ ์ ์ง๋๋ฏ๋ก
STABLE์ ๋ ฌ์ด๋ค.
์ ์ฒด ์ฝ๋
#include <stdio.h>
#define LEN 5
void bubbleSort(int* arr) {
int i, j,temp;
for (i = 0; i < LEN; i++) {
for (j = 0;j < LEN - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[LEN] = { 7,5,1,4,3 };
int i;
printf("์ ๋ ฌ ์ : ");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubbleSort(arr);
printf("์ ๋ ฌ ํ : ");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
์คํ๊ฒฐ๊ณผ