এই সমস্যায় একটি সর্টিং অ্যালগরিদম এবং একটি সংখ্যা n দেওয়া আছে। আমাদের n উপাদানের একটি অ্যারে প্রিন্ট করতে হবে যা উক্ত অ্যালগরিদম দ্বারা সর্ট করা যাবে না। অর্থাৎ অ্যালগরিদমটি ব্যর্থ হবে।
অ্যালগরিদম
loop i from 1 to n-1
loop j from i to n-1
if a[j] > a[i+1]
swap(a[i], a[j+1])
এই সর্টিং অ্যালগরিদমটি দুটি নেস্টেড লুপ ব্যবহার করে। বাহ্যিক লুপ 1 থেকে n-1 পর্যন্ত এবং অভ্যন্তরীণ লুপ i থেকে n-1 পর্যন্ত চলে। প্রতিটি পুনরাবৃত্তিতে অভ্যন্তরীণ লুপের উপাদান এবং বাহ্যিক লুপের উপাদানের মান যাচাই করে অ ক্রমবিশিষ্ট উপাদানগুলো সোয়াপ করে।
এই অ্যালগরিদমটি সেই ক্ষেত্রে ব্যর্থ হবে যেখানে উপাদানগুলো বিপরীত ক্রমে সাজানো থাকে। এছাড়া, সমাধান শুধুমাত্র n ≤ 2 হলে পাওয়া যায়।
#include <iostream>
using namespace std;
void invalidCase(int n) {
if (n <= 2) {
cout << -1;
return;
}
for (int i = n; i >= 1; i--)
cout << i << " ";
}
int main() {
int n = 6;
cout << "The case in which the algorithm goes invalid for " << n << " element array is :\n";
invalidCase(n);
return 0;
}
আউটপুট
6 উপাদানের অ্যারেতে অ্যালগরিদমটি ব্যর্থ হওয়ার কেস:
6 5 4 3 2 1