এই সমস্যায়, আমাদের একটি সাজানোর অ্যালগরিদম এবং একটি সংখ্যা 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.
So, for n = 5. Output : 5 4 3 2 1 Time complexity − O(N)
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর কোড
#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