|
| 1 | +# 버블 정렬 |
| 2 | + |
| 3 | +#### 문제 |
| 4 | + |
| 5 | +원소 n개로 이루어진 정렬되지 않은 배열이 주어졌을 때, 배열을 정렬하는 함수를 작성하라 |
| 6 | + |
| 7 | +#### 접근방식 |
| 8 | + |
| 9 | +- 배열의 첫 번째 원소를 선택한다. |
| 10 | +- 다음 원소와 비교한다. |
| 11 | +- 다음 원소보다 크다면 교환한다. |
| 12 | +- 아니라면 아무것도 하지 않는다. |
| 13 | +- 배열의 모든 인덱스에 이 작업을 진행한다. |
| 14 | +- 위의 과정을 n번 반복한다. |
| 15 | + |
| 16 | +#### 시간 복잡도 |
| 17 | + |
| 18 | +`O(n^2)` 최악의 경우 |
| 19 | + |
| 20 | +`O(n)` 최선의 경우 |
| 21 | + |
| 22 | +`O(n^2)` 평균 복잡도 |
| 23 | + |
| 24 | +#### 공간 복잡도 |
| 25 | + |
| 26 | +`O(1)` 최악의 경우 |
| 27 | + |
| 28 | +#### 만든 사람 |
| 29 | + |
| 30 | +- “Bubble Sort”라는 용어는 1962년 Iverson, K에 의해 처음 사용되었다. |
| 31 | + |
| 32 | +#### 예시 |
| 33 | + |
| 34 | +``` |
| 35 | +배열 = {10, 80, 40, 30} |
| 36 | +인덱스들: 0 1 2 3 |
| 37 | +
|
| 38 | +1. 인덱스 = 0, 숫자 = 10 |
| 39 | +2. 10 < 80, 아무것도 하지 않고 다음 단계로 넘어간다. |
| 40 | +
|
| 41 | +3. 인덱스 = 1, 숫자 = 80 |
| 42 | +4. 80 > 40, 80과 40을 교환한다. |
| 43 | +5. 현재 배열은 {10, 40, 80, 30} |
| 44 | +
|
| 45 | +6. 인덱스 = 2, 숫자 = 80 |
| 46 | +7. 80 > 30, 80과 30을 교환한다. |
| 47 | +8. 현재 배열은 {10, 40, 30, 80} |
| 48 | +
|
| 49 | +위 단계를 다시 반복한다. |
| 50 | +
|
| 51 | +배열 = {10, 40, 30, 80} |
| 52 | +인덱스들: 0 1 2 3 |
| 53 | +
|
| 54 | +1. 인덱스 = 0, 숫자 = 10 |
| 55 | +2. 10 < 40, 아무것도 하지 않고 다음 단계로 넘어간다. |
| 56 | +
|
| 57 | +3. 인덱스 = 1, 숫자 = 40 |
| 58 | +4. 40 > 30, 40과 30을 교환한다. |
| 59 | +5. 현재 배열은 {10, 30, 40, 80} |
| 60 | +
|
| 61 | +6. 인덱스 = 2, 숫자 = 40 |
| 62 | +7. 40 < 80, 아무것도 하지 않는다. |
| 63 | +8. 현재 배열은 {10, 30, 40, 80} |
| 64 | +
|
| 65 | +위 단계를 다시 반복한다. |
| 66 | +
|
| 67 | +배열 = {10, 30, 40, 80} |
| 68 | +인덱스들: 0 1 2 3 |
| 69 | +
|
| 70 | +1. 인덱스 = 0, 숫자 = 10 |
| 71 | +2. 10 < 30, 아무것도 하지 않고 다음 단계로 넘어간다. |
| 72 | +
|
| 73 | +3. 인덱스 = 1, 숫자 = 30 |
| 74 | +4. 30 < 40, 아무것도 하지 않고 다음 단계로 넘어간다. |
| 75 | +
|
| 76 | +5. 인덱스 = 2, 숫자 = 40 |
| 77 | +6. 40 < 80, 아무것도 하지 않는다. |
| 78 | +
|
| 79 | +위 단계에서 교환이 없기 때문에 배열이 정렬되었음을 의미하고, 여기서 멈출 수 있다. |
| 80 | +``` |
| 81 | + |
| 82 | +#### 코드 구현 |
| 83 | + |
| 84 | +- [자바](https://github.com/TheAlgorithms/Java/blob/master/Sorts/BubbleSort.java) |
| 85 | +- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/sorting/bubble_sort.cpp) |
| 86 | +- [파이썬](https://github.com/TheAlgorithms/Python/blob/master/sorts/bubble_sort.py) |
| 87 | +- [C#](https://github.com/TheAlgorithms/C-Sharp/blob/master/Algorithms/Sorters/Comparison/BubbleSorter.cs) |
| 88 | +- [고](https://github.com/TheAlgorithms/Go/blob/master/sorts/bubblesort.go) |
| 89 | +- [루비](https://github.com/TheAlgorithms/Ruby/blob/master/sorting/bubble_sort.rb) |
| 90 | +- [C](https://github.com/TheAlgorithms/C/blob/master/sorting/bubble_sort.c) |
| 91 | +- [스칼라](https://github.com/TheAlgorithms/Scala/blob/master/src/main/scala/Sort/BubbleSort.scala) |
| 92 | +- [자바스크립트](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/BubbleSort.js) |
| 93 | + |
| 94 | +#### 영상 설명 |
| 95 | + |
| 96 | +[버블정렬 알고리즘에 대한 영상 설명](https://www.youtube.com/watch?v=Jdtq5uKz-w4) |
| 97 | + |
| 98 | +#### 그 외 |
| 99 | + |
| 100 | +버블 정렬은 싱킹 정렬이라고도 한다. |
| 101 | + |
| 102 | +#### 애니메이션 설명 |
| 103 | + |
| 104 | +- [Tute Board](https://boardhub.github.io/tute/?wd=bubbleSortAlgo2) |
0 commit comments