정렬알고리즘을 이해하는 가장 쉬운 방법은 시각적으로 보는 것이라 생각한다.
인접한 요소끼리 대소를 비교해서 큰값을 뒤로 작은값을 앞으로 보낸다고 생각하면 쉽다
위 그림처럼 인접한 요소를 비교해 큰값을 뒤로 보내다 보면 1회차 반복이 끝났을 때 최댓값이 가장 마지막 자리로 가게된다
시간 복잡도는 O(N^2)
#include <iostream>
using namespace std;
int main() {
int arr[] = { 6,9,8,1,3,4,2,5,7};
int arrSize = sizeof(arr) / sizeof(int);
int tmp;
for (int i = 0; i < arrSize-1; i++) {
for (int j = i + 1; j < arrSize; j++) {
if (arr[i] > arr[j]) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
for (int i = 0; i < arrSize; i++) {
cout << arr[i] << " ";
}
}
'algorithm' 카테고리의 다른 글
병합정렬 (Merge Sort) (0) | 2021.09.24 |
---|---|
기수정렬 (Radix sort) (0) | 2021.09.15 |
알고리즘의 복잡도 (0) | 2021.09.15 |
선택 정렬(Selection Sort) (0) | 2021.09.07 |
삽입 정렬(Insertion Sort) (0) | 2021.09.07 |
댓글