একটি n×n ইউজার ইনপুট ইন্টিজার ম্যাট্রিক্স এবং k-এর মান দেওয়া আছে। আমাদের কাজ হলো ২ডি অ্যারে-তে k-তম ছোট এলিমেন্ট বের করা। এখানে heapq মডিউল ব্যবহার করা হয়েছে। Heap queue (heapq) পাইথনে। পাইথনে এটি "heapq" মডিউল ব্যবহার করে উপলব্ধ। এই মডিউলের টেকনিক হলো প্রতিবার হিপের সবচেয়ে ছোট এলিমেন্ট পপ (pop) করা হয় (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
অ্যালগরিদম
ধাপ ১: প্রথমে একটি ২ডি অ্যারে তৈরি করুন। ধাপ ২: তারপর প্রথম সারি একটি ভেরিয়েবলে অ্যাসাইন করুন এবং মিন হিপ-এ রূপান্তর করুন। ধাপ ৩: তারপর বাকি সারিগুলো ট্রাভার্স করুন এবং এলিমেন্টগুলো মিন হিপ-এ পুশ করুন। ধাপ ৪: এখন heapq মডিউলের nsmallest(k, iterable) মেথড ব্যবহার করুন এবং প্রথম k সংখ্যক সবচেয়ে ছোট এলিমেন্টের লিস্ট পান, nsmallest(k,list) মেথড প্রথম k সংখ্যক সবচেয়ে ছোট এলিমেন্ট রিটার্ন করে এখন সেই লিস্টের শেষ এলিমেন্ট প্রিন্ট করুন।
উদাহরণ কোড
# পাইথন প্রোগ্রাম: ২ডি অ্যারে-তে K'th smallest element বের করা 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 : ")) #3 here #2D array স্টোর করার জন্য লিস্ট ব্যবহার #ইউজার ইনপুট পান এবং লিস্টে স্টোর করুন (here IN : 1 to 9) print("Enter the element ::>") for i in range(n): row=[] # সারি স্টোর করার জন্য আস্থায়ী লিস্ট for j in range(n): row.append(int(input())) # ইনপুট রো লিস্টে যোগ A.append(row) # রোকে লিস্টে যোগ print(A) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 2D অ্যারে ম্যাট্রিক্স ফর্মে প্রদর্শন 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