हीप डेटा स्ट्रक्चर्स का उपयोग प्रायोरिटी क्यू को प्रस्तुत करने के लिए किया जा सकता है। पायथन में यह heapq मॉड्यूल में उपलब्ध है। यहां यह एक मिन-हीप बनाता है। इसलिए जब प्रायोरिटी 1 होती है, तो यह उच्चतम प्रायोरिटी को दर्शाता है। जब नए एलिमेंट्स डाले जाते हैं, तो हीप स्ट्रक्चर अपडेट होता है।
इस मॉड्यूल का उपयोग करने के लिए, हमें इसे आयात करना चाहिए।
import heapq
कुछ हीप संबंधित ऑपरेशन्स हैं। ये हैं:
मेथड heapq.heapify(iterable)
इसका उपयोग इटरेबल डेटासेट को हीप डेटा स्ट्रक्चर में बदलने के लिए किया जाता है।
मेथड heapq.heappush(heap, element)
यह मेथड एलिमेंट को हीप में डालने के लिए उपयोग किया जाता है। उसके बाद पूरे हीप स्ट्रक्चर को री-हीप करें।
मेथड heapq.heappop(heap)
यह मेथड हीप के टॉप से एलिमेंट को लौटाने और हटाने के लिए उपयोग किया जाता है और शेष एलिमेंट्स पर हीपिफाई करता है।
मेथड heapq.heappushpop(heap, element)
यह मेथड एक स्टेटमेंट में एलिमेंट को डालने और पॉप करने के लिए उपयोग किया जाता है।
मेथड heapq.heapreplace(heap, element)
यह मेथड एक स्टेटमेंट में एलिमेंट को डालने और पॉप करने के लिए उपयोग किया जाता है। यह हीप के रूट से एलिमेंट को हटाता है, फिर एलिमेंट को हीप में डालता है।
मेथड heapq.nlargest(n, iterable, key=None)
यह मेथड हीप से n सबसे बड़े एलिमेंट लौटाने के लिए उपयोग किया जाता है।
मेथड heapq.nsmallest(n, iterable, key=None)
यह मेथड हीप से n सबसे छोटे एलिमेंट लौटाने के लिए उपयोग किया जाता है।
उदाहरण कोड
import heapq
my_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] Popped Element: 7 [10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65] [89, 65, 58, 41]