[백준 2750번, 2751번/c++] 수 정렬하기, 수 정렬하기2
2750번, 2751번 문제 차이와 풀이 방법 같은 수 정렬 문제이지만, 두 문제는 정렬할 수의 개수와 수의 크기 면에서 차이가 있다. 2750번에서 선택정렬을 이용하였고 2751번은 우선순위큐의 최소힙을 이용하였다. 2751번을 선택정렬을 이용하여 실행하니 시간 초과가 발생했다. 즉, 많은 수의 정렬에 있어서는 선택정렬 방법이 효율적이지 못했다. 시간복잡도를 통해 살펴보면 선택정렬은 O(n^2)의 시간복잡도를 가지고 우선순위큐 정렬은 삽입과 삭제 시 모두 O(logn)의 시간복잡도를 가지므로 -> 우선순위큐를 이용하여 정렬하는 방법이 시간 면에서 더 효율적이라는 것을 판단할 수 있다. 2750번: 수 정렬하기 #include int main(){ // freopen("input.txt", "rt", s..
알고리즘
2022. 1. 19. 23:37
[c++] 선택정렬, 버블정렬, 삽입정렬
아래 정렬은 모두 오름차순 정렬을 기준으로 정리하였다. 선택정렬(Selection Sort) 가장 작은 수를 찾아 앞으로 보내는 과정을 반복 배열의 처음부터 끝까지 반복문을 통해 돌며 가장 작은 수를 찾는다. 가장 작은 수를 배열의 맨 앞으로 보낸다. 그 다음 배열부터 끝까지 또 작은 수를 찾아 맨 앞으로 보낸다. 이 과정을 배열이 끝날때까지 반복하여 정렬을 한다. 시간복잡도는 O(n^2) #include int main() { freopen("input.txt", "rt", stdin); int a[101], n, tmp, idx, i, j; scanf("%d", &n); for(i=0; i
알고리즘
2022. 1. 19. 09:53