336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
버블정렬
인접한 데이터를 비교하여 정렬시킨다. 시간복잡도는 O(N^2) 이다.
처음 N개 데이터를 인접한 데이터끼리 N-1번 비교하여 인덱스 끝에 정렬시킨 데이터를 넣는다.
이후 N-1개 데이터로 인접한 데이터 비교를 N-2번 ... 이 과정을 반복한다.
(N-1) + (N-2) + .... + 2 + 1 = (N-1)*(N-2) / 2 = O(N^2)
코드는 단순하다.
가장 마지막 위치부터 정렬시킨다.
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 34 35 36 37 38 39 | #include<iostream> #include<vector> using namespace std; int main() { int n; cin >> n; vector<int> v = vector<int>(n, 0); for (int i = 0; i < n; i++) { cin >> v[i]; } // input for (int ith = 0; ith < n-1; ith++) { for (int here = 0; here < n - 1 - ith; here++) { int there = here + 1; if (v[here] > v[there]) { int temp = v[here]; v[here] = v[there]; v[there] = temp; } } cout << "["<<ith << "th] "; for (auto it : v) { cout << it << " "; } puts(""); } // bubble sort for (auto it : v) { cout << it << " "; } return 0; } /* input format N A[0] A[1] .... A[N-1] */ | cs |
'PSNote > Algorithm' 카테고리의 다른 글
삽입정렬(Insertion sort) (0) | 2017.12.02 |
---|---|
선택정렬(Selection Sort) (0) | 2017.11.19 |
네트워크플로우, 에드몬드 카프(Edmonds-Karp) 알고리즘 (0) | 2017.11.15 |
구간트리(세그먼트트리;Segment tree) (0) | 2017.09.27 |
SCC-코사라주 알고리즘(Kosaraju's Algorithm) (2) | 2017.07.23 |