반응형
버블 정렬
- 두 인접한 요소를 검사하여 정렬
동작
- 오름차순으로 정렬
- 1회
* 1번째 요소와 2번째 요소를 비교하고 순서가 맞지 않으면 교환
* 2번째 요소와 3번째 요소를 비교하고 순서가 맞지 않으면 교환
* n-1번째 요소와 n번째 요소를 비교하고 순서가 맞지 않으면 교환
* n번째에 가장 큰 요소가 위치
- 2회
* 1번째 요소와 2번째 요소를 비교하고 순서가 맞지 않으면 교환
* 2번째 요소와 3번째 요소를 비교하고 순서가 맞지 않으면 교환
* n-2번째 요소와 n-1번째 요소를 비교하고 순서가 맞지 않으면 교환
* n-1번째에 두 번째로 큰 요소가 위치
- 이하 과정 동일
- 예시
구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
void bubble_sort(int list[], int n){
int i, level, tmp;
// 배열 전체를 순회하는 횟수
for(level = 0; level < n -1; level++){
// 1회 순회할 때, 각 요소들 비교
for(i=0; i<n -level -1; i++){
// 오름차순으로 정렬하기 위해 교환
if(list[i] > list[i+1]){
tmp = list[i+1];
list[i+1] = list[i];
list[i] = tmp;
}
}
}
}
|
cs |
특징
- 안정한 정렬
- 1회 순회하면 최댓값/최소값이 맨 뒤에 위치
- 이미 맨 끝에 최댓값/최소값이 위치하더라고 인접한 요소들을 비교하고 교환하기 때문에 느림
- swap은 move보다 더 복잡하기 때문에 오래 걸림
- 시간복잡도
* 평균 : O(N^2)
참조
- 블로그 1
- 블로그 2
- 위키피디아 1
- 위키피디아 2
반응형
'Software Courses > Data Structure' 카테고리의 다른 글
Quick sort (퀵 정렬) (0) | 2020.12.24 |
---|---|
Merge sort (병합 정렬) (0) | 2020.12.23 |
Shell sort (쉘 정렬) (0) | 2020.12.23 |
Insertion sort (삽입 정렬) (0) | 2020.12.22 |
Selection sort(선택 정렬) (0) | 2020.12.22 |