Python
 Computer >> コンピューター >  >> プログラミング >> Python

2D配列でk番目に小さい要素を見つけるPythonプログラム


1つのn×nユーザー入力整数行列が与えられ、kの値。私たちのタスクは、2D配列でk番目に小さい要素を見つけることです。ここでは、Pythonでheapq mudule.Heapキュー(またはheapq)を使用します。 Pythonでは、「heapq」モジュールを使用して利用できます。 Pythonでのこのモジュールの手法は、最小のヒープ要素がポップされるたびに(min heap).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 : 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

  1. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '

  2. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element