본문 바로가기

공부/알고리즘

삽입 정렬 (Insertion Sort)

● 코드

#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

 

'공부 > 알고리즘' 카테고리의 다른 글