1. 버블 정렬
(오름차순을 기준)
1) 정의
앞에서부터 서로 인접한 두 원소를 검사하여 정렬(바로 그 뒤로 보낸다.)
2) 특징
1> 방향
- 선택 정렬: (0~N-1) -> (1~N-1) -> (2~N-1) -> ... -> (N-1)
- 버블 정렬: (0~N-1) -> (0~N-2) -> (0~N-3) -> ... -> (0~1)
(둘 다 정렬에서 제외되는 data가 하나씩 늘어간다.)
2. 구체적인 과정
(오름차순 기준)
1> 0번째 index부터 바로 1번째 index(오른쪽)와 비교해서 교체한다. (큰 data를 뒤로 보낸다.)
2> 1번째 index도 바로 옆이랑 위의 과정을 진행한다. ... N-2번째까지 진행한다.
3> 1> ~ 2> 를 (0~N-1) -> (0~N-2) -> (0~N-3) -> ... -> (0~1)순서로 진행한다.
3. 구현
#include <iostream> using namespace std; const int MAX = 1000; void swap(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int N; cin >> N; int arr[MAX]; for (int i = 0; i < N; i++) { cin >> arr[i]; } for (int i = 0; i < N; i++) { for (int j = 0; j < N-i; j++) { if (arr[j] > arr[j+1]) { swap(arr[j], arr[j + 1]); } } } for (int i = 0; i < N; i++) { cout << arr[i] << '\n'; } }
'알고리즘 > 알고리즘_기초' 카테고리의 다른 글
6강 - C++ STL sort() 함수 (0) | 2020.03.11 |
---|---|
5강 - 병합 정렬 (Merge Sort) (0) | 2020.03.11 |
4강 - 퀵 정렬 (Quick Sort) (0) | 2020.03.11 |
3강 - 삽입 정렬 (Insertion Sort) (0) | 2020.03.11 |
1강 - 선택 정렬 (Selection Sort) (0) | 2020.03.10 |