일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- stack
- 완전탐색
- 이분탐색
- 분리집합
- 너비우선탐색
- backtracking
- Algospot
- priority_queue
- 분할정복
- Greedy
- 종만북
- DP
- 동적계획법
- acm
- 백트래킹
- 다이나믹프로그래밍
- 알고스팟
- 세그먼트트리
- BOJ
- 문자열
- 유니온파인드
- 백준
- 재귀
- union-find
- 누적합
- 스택
- 그리디
- DFS
- 알고리즘문제해결전략
- BFS
- Today
- Total
DAMPER's blog
1.-(2) 기본 정렬 알고리즘 - Bubble Sort (버블정렬) 본문
이번 시간에 다뤄볼 알고리즘은 저번 시간에 이어 기본 정렬 알고리즘인 Bubble Sort 입니다.
Bubble Sort는 Selection Sort와 함께 가장 기본적인 정렬 알고리즘에 속합니다.
Bubble Sort의 동작 과정
1. 첫번째 수 부터 N-1 번째 수 까지 가면서 해당 수와 바로 다음 수를 비교한다.
2. 해당 수 보다 바로 다음 수가 더 작다면, 둘의 자리를 바꿔 큰 수가 뒤에 오도록 한다.
3. N번째 수에 도달하게 되면 그 자리에는 가장 큰 수가 오게된다.
4. 1~3 과정을 N-2번째 수 까지, N-3번째 수까지 ... ... 첫번째 수 까지 하게되면 모든 수가 오름차순으로 정렬된다.
1, 2, 3번과정을 수행하면 다음과 같이 진행됩니다.
여기서 초록색 부분은 현재까지 정렬된 구간입니다.
첫번째 수 부터 진행하여 다섯번째 수에 도달하게 되면 그 자리에는 가장 큰 수 7 이 오게 됨을 알 수 있습니다.
다섯번째 수 까지는 정렬된 구간이니, 네번째 수 까지 1, 2, 3 과정을 진행해보면
이렇게 7을 제외한 가장 큰 수 5까지 정렬된 구간이 됩니다.
더 진행하면 4, 5, 7 까지 정렬되고
마침내 모든 수가 오름차순으로 정렬됩니다.
이 알고리즘의 시간복잡도는 Selection Sort 와 마찬가지로 \( O(n^{2}) \) 입니다.
\( n \)개의 수가 있다면, \( n-1 + n-2 + ... ...+ 1 \) 번 비교를 해야하기 때문입니다.
공간복잡도 또한 Selection Sort와 마찬가지로 \( O(n) \) 입니다.
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
마찬가지로 위 문제를 해결할 수 있습니다.
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 31 32 33 | #include <bits/stdc++.h> using namespace std; int numbers[1001]; int main() { int n; scanf("%d", &n); for(int i=0;i<n;i++) scanf("%d", &numbers[i]); for(int i=0;i<n;i++) { // n-i 번째 수 까지 비교한다. for(int j=0;j<n-i-1;j++) { // 지금 보고 있는 수가 다음 수 보다 크면 자리 바꾸기 if(numbers[j] > numbers[j+1]) { // swap int tmp = numbers[j]; numbers[j] = numbers[j+1]; numbers[j+1] = tmp; } } } for(int i=0;i<n;i++) printf("%d\n", numbers[i]); return 0; } | cs |
'Problem Solving > COALA 튜터링' 카테고리의 다른 글
3. (1) C++ STL (Standard Template Library) (0) | 2021.05.19 |
---|---|
2. 재귀 함수 (0) | 2021.05.03 |
1.-(1) 기본 정렬 알고리즘 - Selection Sort(선택정렬) (0) | 2021.05.03 |
0. Intro (0) | 2021.05.03 |