এটি একটি C++ প্রোগ্রাম যা দেয়া জটিলতা সীমাবদ্ধতা সহ n এলিমেন্টের সেকেন্ড স্মোলেস্ট বের করে।
অ্যালগরিদম
শুরু
ফাংশন SecondSmallest():
/* এই ফাংশনের আর্গুমেন্ট:
একটি পয়েন্টার অ্যারে a।
এলিমেন্ট সংখ্যা n
*/
// ফাংশনের বডি:
একটি ভেরিয়েবল s1 ডিক্লেয়ার করা হয়েছে ছোট সংখ্যা ট্র্যাক রাখতে।
একটি ভেরিয়েবল s2 ডিক্লেয়ার করা হয়েছে দ্বিতীয় ছোট সংখ্যা ট্র্যাক রাখতে।
s1 এবং s2 দুটো INT_MAX দিয়ে ইনিশিয়ালাইজ করুন।
ইটারেশন ব্যবহার করে ডেটা অ্যারে ট্রাভার্স করুন।
যদি করেন্ট অ্যারে এলিমেন্ট s1-এ থাকা করেন্ট ভ্যালুর চেয়ে কম হয়, তবে s2 = s1 এবং s1 = করেন্ট অ্যারে এলিমেন্ট।
অন্যথায় যদি অ্যারে এলিমেন্ট s1 এবং s2-এর মাঝপথে থাকে,
তবে s2 = করেন্ট অ্যারে এলিমেন্ট।
if(s2 == INT_MAX)
"no second smallest element is present" প্রিন্ট করুন।
অন্যথায়
s2 প্রিন্ট করুন সেকেন্ড স্মোলেস্ট এলিমেন্ট হিসেবে।
শেষ
উদাহরণ
#include <iostream>
#include <climits> // INT_MAX-এর জন্য
using namespace std;
int SecondSmallest(int* a, int n) {
int s1, s2, i, t;
// s1 এবং s2 ইনিশিয়ালাইজ
s1 = INT_MAX;
s2 = INT_MAX;
for (i = 0; i < n; i++) {
// যদি করেন্ট এলিমেন্ট s1-র চেয়ে ছোট হয়
if (s1 > a[i]) {
// s1 এবং s2 আপডেট
s2 = s1;
s1 = a[i];
}
// যদি a[i] s1 এবং s2-এর মাঝপথে থাকে
else if (s2 > a[i] && a[i] != s1) {
// শুধু s2 আপডেট
s2 = a[i];
}
}
if (s2 == INT_MAX)
cout << "no second smallest element is present";
else
cout << "Second smallest element is:" << s2;
}
int main() {
int n, i;
cout << "Enter the number of elements: ";
cin >> n;
int array[n];
for (i = 0; i < n; i++) {
cout << "Enter " << i+1 << " element: ";
cin >> array[i];
}
SecondSmallest(array, n); // ফাংশন কল
return 0;
}
আউটপুট
Enter the number of elements: 5 Enter 1 element: 1 Enter 2 element: 2 Enter 3 element: 1 Enter 4 element: 3 Enter 5 element: 4 Second smallest element is:2