● 코드
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; using ll = long long; using ii = pair<int, int>; int main() { // 입력 int N; cin >> N; vector<int>arr(N); for (int i = 0; i < N; i++) cin >> arr[i]; // 삽입 정렬 for (int i = 1; i < N; i++) { int temp = arr[i]; int idx = i - 1; while (0 <= idx && temp < arr[idx]) { arr[idx + 1] = arr[idx]; idx--; } arr[idx + 1] = temp; } // 출력 for (int i = 0; i < N; i++) cout << arr[i] << "\n"; return 0; }
● 결과 화면

● 시간복잡도 : O(N^2)
● BOJ 문제 : 2750 수 정렬하기
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
'공부 > 알고리즘' 카테고리의 다른 글
확장 유클리드 호제법 (Extended Euclidean Algorithm) (1) | 2023.02.16 |
---|---|
백트래킹 (Backtracking) (0) | 2022.07.10 |
카운팅 정렬 (Counting Sort) (0) | 2022.07.09 |
병합 정렬 (Merge Sort) (0) | 2022.07.09 |
버블 정렬 (Bubble Sort) (0) | 2022.07.08 |