public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
// ์ธ์ ํ ๋ ์์๋ฅผ ๋น๊ตํ์ฌ ์์๊ฐ ์๋ชป๋์ด ์์ผ๋ฉด ๊ตํ
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// ๋ฐฐ์ด ์ถ๋ ฅ์ ์ํ ๋ฉ์๋
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
// ํ
์คํธ๋ฅผ ์ํ ๋ฉ์ธ ๋ฉ์๋
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
System.out.println("์ ๋ ฌ ์ ๋ฐฐ์ด:");
printArray(arr);
bubbleSort(arr);
System.out.println("์ ๋ ฌ ํ ๋ฐฐ์ด:");
printArray(arr);
}
}
Java
๋ณต์ฌ
์๊ฐ๋ณต์ก๋ ๋ถ์
๋ฒ๋ธ ์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋๋ O(nยฒ)์
๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ถ์์ ํตํด ๋์ถ๋ฉ๋๋ค:
โข
์ธ๋ถ ๋ฃจํ (i): n-1๋ฒ ๋ฐ๋ณต
โข ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์ํ
โข
๋ด๋ถ ๋ฃจํ (j): (n-i-1)๋ฒ ๋ฐ๋ณต
โข ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต: n-1๋ฒ ๋น๊ต
โข ๋ ๋ฒ์งธ ๋ฐ๋ณต: n-2๋ฒ ๋น๊ต
โข ๋ง์ง๋ง ๋ฐ๋ณต: 1๋ฒ ๋น๊ต
๋ฐ๋ผ์ ์ ์ฒด ์ฐ์ฐ ํ์๋:
(n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2
์ต์ข
์ ์ผ๋ก O(nยฒ)๊ฐ ๋ฉ๋๋ค.
๊ณต๊ฐ๋ณต์ก๋
๋ฒ๋ธ ์ ๋ ฌ์ ๊ณต๊ฐ๋ณต์ก๋๋ O(1)์
๋๋ค. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ณ ์ฃผ์ด์ง ๋ฐฐ์ด ๋ด์์ ์์๋ค์ ์์น๋ง ๊ตํํ๊ธฐ ๋๋ฌธ์
๋๋ค.
ํน์ง
โข
์์ ์ฑ: ์์ ์ ๋ ฌ (๊ฐ์ ๊ฐ์ ๊ฐ์ง ์์๋ค์ ์๋์ ์์๊ฐ ์ ์ง๋จ)
โข
์ ์๋ฆฌ ์ ๋ ฌ: ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ์ ์์
โข
์๊ฐ๋ณต์ก๋
โข ์ต์ ์ ๊ฒฝ์ฐ: O(n) - ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ
โข ํ๊ท ์ ๊ฒฝ์ฐ: O(nยฒ)
โข ์ต์
์ ๊ฒฝ์ฐ: O(nยฒ) - ์ญ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ
โข
๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์
โข
ํฐ ๋ฐ์ดํฐ์
์๋ ๋นํจ์จ์ ์ด์ง๋ง, ์์ ๋ฐ์ดํฐ์
์์๋ ๊ด์ฐฎ์ ์ฑ๋ฅ์ ๋ณด์