Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Heap Queue Algorithm


โครงสร้างข้อมูลฮีปสามารถใช้เพื่อแสดงลำดับความสำคัญได้ ใน python มีอยู่ในโมดูล heapq ที่นี่มันสร้าง min-heap ดังนั้นเมื่อลำดับความสำคัญเป็น 1 จะแสดงถึงลำดับความสำคัญสูงสุด เมื่อแทรกองค์ประกอบใหม่ โครงสร้างฮีปจะอัปเดต

ในการใช้โมดูลนี้ เราควรนำเข้าโดยใช้ −

นำเข้า heapq

มีการดำเนินการที่เกี่ยวข้องกับฮีป เหล่านี้คือ −

วิธีการ heapq.heapify(iterable)

ใช้เพื่อแปลงชุดข้อมูลที่ทำซ้ำได้เป็นโครงสร้างข้อมูลแบบฮีป

วิธีการ heapq.heappush(ฮีป องค์ประกอบ)

วิธีนี้ใช้เพื่อแทรกองค์ประกอบลงในฮีป หลังจากนั้น ฮีปโครงสร้างฮีปทั้งหมดอีกครั้ง

วิธีการ heapq.heappop(ฮีป)

วิธีนี้ใช้เพื่อส่งคืนและลบองค์ประกอบออกจากด้านบนของฮีปและดำเนินการ heapify กับองค์ประกอบที่เหลือ

วิธีการ heapq.heappushpop(ฮีป องค์ประกอบ)

วิธีนี้ใช้เพื่อแทรกและป๊อปองค์ประกอบในคำสั่งเดียว..

วิธีการ heapq.heapreplace(ฮีป องค์ประกอบ)

วิธีนี้ใช้เพื่อแทรกและป๊อปองค์ประกอบในคำสั่งเดียว มันลบองค์ประกอบออกจากรูทของฮีป จากนั้นแทรกองค์ประกอบลงในฮีป

เมธอด heapq.nlargest(n, iterable, key=None)

วิธีนี้ใช้เพื่อคืนค่า n องค์ประกอบที่ใหญ่ที่สุดจากฮีป

วิธีการ heapq.nsmallest(n, iterable, key=None)

วิธีนี้ใช้เพื่อคืนค่า n องค์ประกอบที่เล็กที่สุดจากฮีป

โค้ดตัวอย่าง

นำเข้า heapqmy_list =[58, 41, 12, 17, 89, 65, 23, 20, 10, 16, 17, 19]heapq.heapify(my_list)print(my_list)heapq.heappush(my_list, 7)print (my_list)print('Popped Element:' + str(heapq.heappop(my_list)))print(my_list)new_iter =list()new_iter =heapq.nlargest(4, my_list)print(new_iter)

ผลลัพธ์

<ก่อน>[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65][7, 16, 10, 17, 17, 12, 23, 20, 41, 89, 58 , 65, 19]ป๊อปอัพ:7[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65][89, 65, 58, 41]