Coding Planet
๋ฒ๋ธ์ ๋ ฌ - ์๋ฐ๋ก ๊ตฌํํ๊ธฐ ๋ณธ๋ฌธ
๐ ์ฝ๋ฉํ
์คํธ/์๊ณ ๋ฆฌ์ฆ
๋ฒ๋ธ์ ๋ ฌ - ์๋ฐ๋ก ๊ตฌํํ๊ธฐ
jhj.sharon 2023. 8. 21. 16:16๋ฐ์ํ
| ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort)์ด๋?
- ๊ฐ๋จํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค์ ํ๋๋ก ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด, ์ด ์๊ณ ๋ฆฌ์ฆ์ ํฐ ๊ฐ์ด ๋ง์น "๋ฒ๋ธ"์ฒ๋ผ ๋ฐฐ์ด์ ๋์ผ๋ก "๋ ์ค๋ฅด๊ฒ"ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
| ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort)์ ์๋์๋ฆฌ
1) ์ฒซ ๋ฒ์งธ ํญ๋ชฉ๋ถํฐ ๋ง์ง๋ง ํญ๋ชฉ๊น์ง ์์ฐจ์ ์ผ๋ก ์ด๋ํ๋ฉด์ ์ธ์ ํ ํญ๋ชฉ์ ๋น๊ตํ๋ค.
2) ์ธ์ ํ ๋ ํญ๋ชฉ์ ๋น๊ตํ๋ฉด์ ์ผ์ชฝ ํญ๋ชฉ์ด ์ค๋ฅธ์ชฝ ํญ๋ชฉ๋ณด๋ค ํฌ๋ฉด ๋ ํญ๋ชฉ์ ์์น๋ฅผ ๋ฐ๊พผ๋ค.
3) ์์ ๊ณผ์ ์ ๋ฐฐ์ด์ ๋ชจ๋ ํญ๋ชฉ์ ๋ํด ๋ฐ๋ณตํ๋ค.
4) ์์ 3๋จ๊ณ๋ฅผ ๋ฐฐ์ด์ ํญ๋ชฉ ์๋งํผ ๋ฐ๋ณตํ๋ฉด ๋ฐฐ์ด์ด ์ ๋ ฌ๋๋ค.
์์) 1 5 3 9 7 ๋ฐฐ์ด์ด ๋ฒ๋ธ ์ ๋ ฌ๋๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด๊ธฐ ๋ฐฐ์ด1 5 3 9 71์ฐจ ๋ฐ๋ณต (i=0)
2์ฐจ ๋ฐ๋ณต (i=1)
์ฐธ๊ณ ๋ก, ์ด๋ฏธ ์ ๋ ฌ๋ ๋ถ๋ถ(์ฌ๊ธฐ์๋ 9)์ ๋ค์ ๊ฒ์ฌํ์ง ์๊ธฐ ์ํด, ๋ฒ๋ธ ์ ๋ ฌ์์๋ ๊ฐ ๋ฐ๋ณต๋ง๋ค ๊ฒ์ฌํด์ผ ํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ํ๋์ฉ ์ค์ด๋ญ๋๋ค. |
| ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort)์ ํน์ง
(์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋ : https://sharonprogress.tistory.com/234)
- ์๊ฐ๋ณต์ก๋ : ํ๊ท ๋ฐ ์ต์ ์ ๊ฒฝ์ฐ O(n^2) , n์ ๋ฐฐ์ด์ ํญ๋ชฉ ์
- ๊ณต๊ฐ ๋ณต์ก๋ : O(1)
- ์์ ์ ์ ๋ ฌ : ๋์ผํ ๊ฐ์ ์๋ ์์๊ฐ ์ ๋ ฌ ํ์๋ ์ ์ง๋๋ค.
| ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort)์ ์ฌ์ฉ
- ์์ ํน์ง๋ค๋ก ์ธํด ๋๊ท๋ชจ ๋ฐ์ดํฐ์๋ ์ ํฉํ์ง ์์ผ๋ฉฐ, ํจ์จ์ ์ด์ง ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก ๊ฐ์ฃผ๋๋ค. ์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ๋ณด๋ค ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ(ํต ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ ๋ฑ)์ด ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
| ๋ฒ๋ธ์ ๋ ฌ(Bubble Sort) Java๋ก ๊ตฌํํ๊ธฐ
- ์๋ ์ฝ๋์์ 'bubble Sort' ํจ์๋ ์ฃผ์ด์ง ๋ฐฐ์ด 'arr'์ ๋ฒ๋ธ ์ ๋ ฌํ๋ค.
- swapped๋ผ๋ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋ผ์ด๋์์ ์ด๋ค ์์๋ ๊ตํ๋์ง ์์๋ค๋ฉด ๋ฐฐ์ด์ด ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋ ์ด์์ ์ ๋ ฌ์ ์ค๋จํ๋ค. ์ด๋ ๋ฒ๋ธ ์ ๋ ฌ์ ์ฑ๋ฅ์ ์ฝ๊ฐ ํฅ์์ํค๋ ์ต์ ํ ๋ฐฉ๋ฒ์ด๋ค.
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
System.out.println("Sorted array:");
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void bubbleSort(int[] arr) {
int n = arr.length;
boolean swapped;
for (int i = 0; i < n - 1; i++) {
swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// swap arr[j] and arr[j+1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// If no two elements were swapped by inner loop, then break
if (!swapped) {
break;
}
}
}
}
๋ฐ์ํ
'๐ ์ฝ๋ฉํ ์คํธ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Stack, Queue Java๋ก ๊ตฌํํ๊ธฐ(์ ์ผ ๊ฐ๋จํ arrayํ์) (0) | 2023.09.13 |
---|---|
์ฌ๊ทํจ์ ์๊ณ ๋ฆฌ์ฆ - ํฉํ ๋ฆฌ์ผ ํจ์ ์์ (0) | 2023.08.26 |
์๊ฐ๋ณต์ก๋(Time Complexity)์ ๊ณต๊ฐ๋ณต์ก๋(Space Complexity) (0) | 2023.08.21 |
12. ์ํธ - replace, Inteager.parseInt(์ง์ ๋ณ๊ฒฝํ๊ธฐ) (0) | 2023.07.07 |
9. ์ซ์๋ง ์ถ์ถ - Character.isDigit(), ASCII Code ์ฌ์ฉํ๊ธฐ (0) | 2023.05.08 |
Comments