Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

차근차근

[정렬] 버블 정렬 본문

대학교/Algorithm

[정렬] 버블 정렬

SWKo 2020. 1. 28. 20:19

0. 핵심 아이디어

  • 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내면 어떨까?

1. 예시

  1. 1  10  5  8  7  6  4  3  2  9
  2. 1  5  10  8  7  6  4  3  2  9
  3. 1  5   8  10 7  6  4  3  2  9
  4. 1  5   8  7  10 6  4  3  2  9
  5. 1  5   8  7  6  10 4  3  2  9
  6. 1  5   8  7  6   4 10 3  2  9
  7. 1  5   8  7  6   4  3 10 2  9
  8. 1  5   8  7  6   4  3  2 10 9
  9. 1  5   8  7  6   4  3  2  9  10    //결국 가장 큰 값이 뒤로 오게 됨. 첫번째 Loop 끝.
  10. 1  5   7  8  6   4  3  2  9  10
  11. 1  5   7  6  8   4  3  2  9  10
  12. ....

2. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main(int argc, const char * argv[]) {
    int i, j, temp;
    int array[10= {11058764329};
    for(i = 0; i < 10; i++){
        for(j = 0; j < 9 - i; j++){
            if(array[j] > array[j+1]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1= temp;
            }
        }
    }
    for(i = 0; i < 10; i++){
        cout << array[i] << " ";
    }
    return 0;
}
 
 

3. 시간복잡도

  • N * (N+1) / 2 => O(N^2)
  • 선택 정렬보다 느리다. 왜냐하면 버블 정렬은 계속해서 자리를 바꾸는 연산을 실시하기 때문에 작업량이 더 많다. 선택 정렬은 마지막에만 교체하지만 버블 정렬은 매번 교체한다.

 

'대학교 > Algorithm' 카테고리의 다른 글

[백준 11724] 연결 요소의 개수  (0) 2020.01.29
[백준 2750] 수 정렬하기  (0) 2020.01.28
[정렬] 선택 정렬  (0) 2020.01.28
[백준 1260] DFS와 BFS  (0) 2020.01.28
[백준 11054] 가장 긴 바이토닉 부분 수열  (0) 2020.01.27
Comments