কম্পিউটার টিউটোরিয়াল

C++-এ দেওয়া সর্টিং অ্যালগরিদম ব্যর্থ হলে একটি কেস প্রিন্ট করা

এই সমস্যায় একটি সর্টিং অ্যালগরিদম এবং একটি সংখ্যা 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
  1. স্ট্রিং-এ স্বরবর্ণ জোড়া গণনা C++-এ

  2. সি++-এ দিয়ে রেঞ্জে M দ্বারা বিভাজ্য সংখ্যা গণনা

  3. C++-এ দেওয়া রেঞ্জ [L, R]-এ সব এলিমেন্টের XOR

  4. C++-এ একটি ম্যাট্রিক্স কাউন্টার-ক্লকওয়াইজ স্পাইরাল ফর্মে প্রিন্ট করা