본문 바로가기
알고리즘

[파이썬] heapq 라이브러리

by 자바지기 2021. 9. 26.
반응형

heapq는 우선순위 큐 기능을 구현하고자 할 때 사용된다. 

파이썬의 heapq 라이브러리는 최소 힙으로 구성되어 있다.

따라서 단순히 원소를 힙에 넣었다가 빼는 것만으로도 시간 복잡도 O(NlogN)의 오름차순 정렬이 완료된다.

 

heapq의 메서드 

힙에 원소를 삽입할 때 -> heapq.heappush()

힙에서 원소를 꺼낼 때 -> heapq.heappop()

 

사용 예:

def heapsort(iterable):
  h = []
  result =[]
  for value in iterable:
    heapq.heappush(h,value)
    
  for i in range(len(h)):
    result.append(heapq.heappop(h))
  return result

result = heapsort([1,3,5,7,9,2,4,6,8,0])
print(result) #[0, 1, 2, 6, 3, 5, 4, 7, 8, 9]

 

리스트를 힙으로 변환할 때 -> heapq.heapify()        ( 시간복잡도: O(N) )

사용 예:

result2 = [1,3,5,7,9,2,4,6,8,0]
heapq.heapify(result2)

print(result2) # [0, 1, 2, 6, 3, 5, 4, 7, 8, 9]

 

반응형

'알고리즘' 카테고리의 다른 글

[파이썬] asterisk( * )  (0) 2021.10.19
[파이썬] bisect 라이브러리  (0) 2021.09.26
[파이썬] itertools 라이브러리  (0) 2021.09.26
[파이썬] Counter 클래스 사용법  (0) 2021.09.08
정수에 대한 유클리드 호제법  (0) 2021.09.07

댓글