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


+ Recent posts