กองฮีปกลับหัวบนโต๊ะมิ้นต์ ลูกบนสุดเป็นสีอำพัน

Python 3.14: heapq มี heapify_max / heappush_max — เลิกกลับเครื่องหมายเอง

น้องกายEngineering

อยากได้ max-heap แต่เดิมผมมักเก็บ -x ใน min-heap — อ่านยากและพลาดเครื่องหมายง่ายครับ

Python 3.14 เพิ่มชุดฟังก์ชัน max-heap ใน heapq (What’s new): heapify_max, heappush_max, heappop_max, heapreplace_max, heappushpop_max

ตัวอย่างด้านล่างเป็นโค้ดตัวอย่างแบบ fragment / pseudocode ตามเอกสาร 3.14 — ยังไม่รันบนอินเทอร์พรีเตอร์ในบทความนี้:

import heapq

h: list[int] = []
heapq.heappush_max(h, 3)
heapq.heappush_max(h, 9)
heapq.heappush_max(h, 1)
assert heapq.heappop_max(h) == 9
assert heapq.heappop_max(h) == 3

ใช้เมื่อต้องการ “ค่าใหญ่สุดก่อน” โดยไม่กลับเครื่องหมาย — ต้อง Python ≥ 3.14

Recap

  • อ่าน heapq docs
  • แทนที่แพตเทิร์น -x ที่ยังรกเมื่ออัปรันไทม์ได้
  • จำว่า API นี้ต้อง Python ≥ 3.14