Python程序在2D数组中找到第k个最小元素
给出一个n×n用户输入整数矩阵,值k。我们的任务是找出二维数组中第k个最小的元素。在这里,我们在Python中使用了heapq mudule.Heap队列(或heapq)。在Python中,可以使用“ heapq”模块使用。python中此模块的技术是每次弹出最小的堆元素(最小堆)。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
算法
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 : 4Enter 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
以上是 Python程序在2D数组中找到第k个最小元素 的全部内容, 来源链接: utcz.com/z/347222.html