이번에 리뷰할 코드는 버블 정렬( Bubble Sort ) 알고리즘 코드이다. 구현하기는 간단한 정렬이지만 시간 복잡도 측면에서는 N제곱으로 효율적이지는 않은 정렬 알고리즘이다.
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
40
41
42
43
44
45
46
47
48
49
50
|
#include <iostream>
using namespace std;
void swap(int & a, int & b){ // 인자를 레퍼런스로 받음
int c = a;
a = b;
b = c;
}
int main() {
int * arr; // 동적으로 메모리를 할당할 포인터 변수
int N = 0; // 원소의 갯수
cin >> N; // N을 입력
arr = new int[N]; // N * 4 byte 만큼 동적 메모리 할당
for(int i=0;i<N;i++){
cin >> arr[i];
}
cout << "----- before -----" << endl;
for(int i=0;i<N;i++){
cout << arr[i] << " "; // 정렬하기 이전 값 출력
}
cout << endl << endl;
for(int i=0;i<N-1;i++){
for(int j=0;j<N-1-i;j++){
if(arr[j] > arr[j+1]){ // arr[j] 가 arr[j+1] 보다 더 클경우 swap 함수 호출
swap(arr[j], arr[j+1]);
}
}
}
cout << "----- after -----" << endl;
for(int i=0;i<N;i++){
cout << arr[i] << " "; // 정렬한 이후 값 출력
}
cout << endl;
delete [] arr; // 동적 메모리 해제
return 0;
}
|
이것 저것 출력 문을 붙여서 조금 길어 졌지만 버블 정렬 자체 코드는 간결하다.
'ALGORITHM > 자료구조, 알고리즘' 카테고리의 다른 글
Insertion Sort (0) | 2020.04.19 |
---|---|
Selection Sort (0) | 2020.04.19 |
이진 탐색 트리 (0) | 2020.04.16 |