एक n×n यूजर इनपुट इंटीजर मैट्रिक्स दिया गया है और k का मान। हमारा कार्य 2D ऐरे में k-वां सबसे छोटा एलिमेंट ढूंढना है। यहां हम heapq मॉड्यूल का उपयोग करते हैं। पायथन में हीप क्यू (या heapq) उपलब्ध है। इस मॉड्यूल की तकनीक यह है कि हर बार हीप एलिमेंट का सबसे छोटा पॉप किया जाता है (मिन हीप)। nsmallest() मेथड का उपयोग डेटा फ्रेम या सीरीज से n सबसे छोटे मान प्राप्त करने के लिए किया जाता है।
उदाहरण
Input Array is:: 10 20 20 40 15 45 40 30 32 33 30 50 12 78 99 78 The value of k is 10 10 th smallest element is 40
एल्गोरिदम
चरण 1: पहले एक 2D ऐरे बनाएं। चरण 2: फिर पहली पंक्ति को एक वेरिएबल में असाइन करें और इसे मिन हीप में कन्वर्ट करें। चरण 3: फिर शेष पंक्तियों को ट्रैवर्स करें और एलिमेंट्स को मिन हीप में पुश करें। चरण 4: अब heapq मॉड्यूल के nsmallest(k, iterable) मेथड का उपयोग करें और पहले k सबसे छोटे एलिमेंट्स की लिस्ट प्राप्त करें, nsmallest(k,list) मेथड पहले k सबसे छोटे एलिमेंट्स लौटाता है अब उस लिस्ट का लास्ट एलिमेंट प्रिंट करें।
उदाहरण कोड
# पायथन प्रोग्राम: 2D ऐरे में K-वां सबसे छोटा एलिमेंट खोजने के लिए
import heapq
def smallestele(A):
assignval = A[0]
heapq.heapify(assignval)
for i in A[1:]:
for j in i:
heapq.heappush(assignval, j)
mini = heapq.nsmallest(k, assignval)
print(k, "th smallest element is ", mini[-1])
# ड्राइवर प्रोग्राम
if __name__ == "__main__":
A = []
n = int(input("Enter N for N x N matrix: "))
print("Enter the element ::>")
for i in range(n):
row = [] # पंक्ति स्टोर करने के लिए अस्थायी लिस्ट
for j in range(n):
row.append(int(input())) # इनपुट को पंक्ति लिस्ट में जोड़ें
A.append(row) # पंक्ति को लिस्ट में जोड़ें
print(A)
# Display the 2D array
print("Display Array In Matrix Form")
for i in range(n):
for j in range(n):
print(A[i][j], end=" ")
print() # नई लाइन
k = int(input("Enter the kth position ::>"))
smallestele(A)आउटपुट
Enter N for N x N matrix: 4 Enter the element ::> 10 20 20 40 15 45 40 30 32 33 30 50 12 78 99 78 [[10, 20, 20, 40], [15, 45, 40, 30], [32, 33, 30, 50], [12, 78, 99, 78]] Display Array In Matrix Form 10 20 20 40 15 45 40 30 32 33 30 50 12 78 99 78 Enter the kth position ::>10 10 th smallest element is 40