N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
5
5
4
3
2
1
1
2
3
4
5
pypy3 제출)def heapify(num, idx, n):   # idx : 현재 노드
    left = idx * 2   # 현재 노드 아래 왼쪽 노드
    right = idx * 2 + 1   # 현재 노드 아래 오른쪽 노드
    if left > n:   # 트리에 자식 노드가 없다면 함수 실행 x
        return
    temp_idx = idx
    if left <= n and num[temp_idx] > num[left]:
        temp_idx = left
    if right <= n and num[temp_idx] > num[right]:
        temp_idx = right
    if temp_idx != idx:
        num[idx], num[temp_idx] = num[temp_idx], num[idx]
        heapify(num, temp_idx, n)
def heap_sort(num, n):
    num = [0] + num
    # min heap 구하기
    for i in range(n, 0, -1):
        heapify(num, i, n)
    # heap 정렬 출력하기
    for i in range(n):
        print(num[1])
        num[1], num[n-i] = num[n-i], num[1]
        heapify(num, 1, n-i-1)
n = int(input())
num = [int(input()) for _ in range(n)]
heap_sort(num, n)
# 힙 자료구조 모듈 임포트
import heapq
heap = []
n = int(input())
# min heap 구하기
for _ in range(n):
    heapq.heappush(heap, int(input()))
# print(heap) : [1, 2, 4, 5, 3]
# 힙에서 원소 하나씩 삭제
for _ in range(n):
    print(heapq.heappop(heap))
n = int(input())
num = [int(input()) for _ in range(n)]
num.sort()
for i in num:
    print(i)
참고 사이트: