알고리즘/Python
[ 힙 정렬 ( heap sort ) ]
Hexs
2023. 10. 9. 22:00
반응형
- 힙은 완전 이진트리이며 우선순위 큐를 위하여 만들어진 자료구조임.
- 최악의 경우라도 시간 복잡도는 O(nlogn)을 보장.
힙 정렬의 시간 복잡도는 O(nlogn) 이다. 이유는 힙을 만드는 과정 O(logn)의 복잡도를 가지는데.
n개의 원소를 모두 정렬 하기위한 최종적인 시간복잡도는 n * (logn) = O(nlogn) 이다
- 최소 힙
노드의 값이 1개씩인 힙이다.
- (2) push.
- (3) push 상위 노드가 3보다 작기 때문에 변화 없음.
- (1) push 상위 노드가 1보다 크기 때문에 서로 위치 변경
다음은 아래의 문제를 풀 때 사용했던. push 되는 값이 2개인 경우이다.
https://www.acmicpc.net/problem/1916
1916번: 최소비용 구하기
첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그
www.acmicpc.net
값이 2개인 경우 앞의 번호순으로 먼저 정렬되고 만약 앞의 수가 같다면 뒤에 있는 숫자로 정렬된다.
- (2,9) push
- (3,9) push 상위노드 값이 더 작기 떄문에 변화 없음.
- (1,9) push 상위노드 값이 더 크기 떄문에 서로 위치 변경
- (1,5) push 상위 노드의 값이 더 크기 때문에 서로 위치 변경
- (1,5) 와 상위노드 (1,9) 의 첫 번째 숫자가 같지만 하위노드의 두 번째 숫자가 더 작으므로 위치 변경.
- (2,11) push 상위 노드의 값이 더 작기 때문에 변화 없음
반응형