หนึ่ง n×n ผู้ใช้อินพุตเมทริกซ์จำนวนเต็มจะได้รับและค่าของ k งานของเราคือค้นหาองค์ประกอบที่เล็กที่สุดที่ k ในอาร์เรย์ 2 มิติ ที่นี่เราใช้ heapq mudule.Heap queue (หรือ heapq) ใน Python ใน Python สามารถใช้งานได้โดยใช้โมดูล "heapq" เทคนิคของโมดูลนี้ในไพ ธ อนคือทุกครั้งที่มีการใช้เมธอดที่เล็กที่สุดของฮีป (min heap).nsmallest () วิธีรับค่าที่น้อยที่สุดจากเฟรมข้อมูลหรือชุดข้อมูล
ตัวอย่าง
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
อัลกอริทึม
Step 1: First create a 2D array. Step 2: Then assign first row to a variable and convert it into min heap. Step 3: Then traverse remaining rows and push elements in min heap. Step 4: Now use nsmallest(k, iterable) method of heapq module and get list of first k smallest element, nsmallest(k,list) method returns first k smallest element now print last element of that list.
โค้ดตัวอย่าง
# python program to find K'th smallest element in
# a 2D array in Python
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])
# Driver program
if __name__ == "__main__":
A=[]
n=int(input("Enter N for N x N matrix : ")) #3 here
#use list for storing 2D array
#get the user input and store it in list (here IN : 1 to 9)
print("Enter the element ::>")
for i in range(n):
row=[] #temporary list to store the row
for j in range(n):
row.append(int(input())) #add the input to row list
A.append(row) #add the row to the list
print(A)
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
#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() #new line
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