หนึ่ง 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