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

অ্যারে শাফলিং-এর জন্য ফিশার-ইয়েটস অ্যালগরিদম বাস্তবায়নের C++ প্রোগ্রাম


ফিশার-ইয়েটস অ্যালগরিদম অ্যারে উপাদানগুলির একটি র‍্যান্ডম পারমুটেশন তৈরি করে অর্থাৎ এটি একটি অ্যারের সমস্ত উপাদানকে র‍্যান্ডমলি শাফল করে। ফিশার-ইয়েটস অ্যালগরিদম নिष্পক্ষ হওয়ার কারণে অ্যারের সমস্ত পারমুটেশন সমানভাবে সম্ভাব্য।

C++-তে ফিশার-ইয়েটস অ্যালগরিদম বাস্তবায়ন করে অ্যারে শাফলিং-এর একটি প্রোগ্রাম নিচে দেওয়া হলো:

উদাহরণ

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
    int n;
    cout << "Enter the array size: " << endl;
    cin >> n;
    int arr[n], arr1[n], index_arr[n];
    int index;
    cout << "Enter the array elements: " << endl;
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    for (int i = 0; i < n; i++)
        index_arr[i] = 0;
    for (int i = 0; i < n; i++) {
        do {
            index = rand() % n;
        } while (index_arr[index] != 0);
        index_arr[index] = 1;
        arr1[i] = arr[index];
    }
    cout << "The shuffled array is: ";
    for (int i = 0; i < n; i++)
        cout << arr1[i] << " ";
    return 0;
}

আউটপুট

Enter the array size: 10
Enter the array elements: 1 2 3 4 5 6 7 8 9 10
The shuffled array is: 4 7 8 6 3 10 2 1 9 5

উপরোক্ত প্রোগ্রামে, অ্যারের আকার এবং অ্যারেটি ব্যবহারকারী থেকে অনুরোধ করা হয়েছে। এটি নিচে দেওয়া হলো:

cout << "Enter the array size: " << endl;
cin >> n;
int arr[n], arr1[n], index_arr[n];
int index;
cout << "Enter the array elements: " << endl;
for (int i = 0; i < n; i++)
    cin >> arr[i];

অ্যারেটি পাওয়ার পর, index_arr[] ০ দিয়ে ইনিশিয়ালাইজ করা হয়। তারপর rand() ফাংশন ব্যবহার করে arr[]-এর মানগুলি র‍্যান্ডমলি arr1[]-এ সংরক্ষণ করা হয়। এটি নিচের কোড স্নিপেটে প্রদর্শিত হয়েছে:

for (int i = 0; i < n; i++) {
    do {
        index = rand() % n;
    } while (index_arr[index] != 0);
    index_arr[index] = 1;
    arr1[i] = arr[index];
}

শেষে শাফল করা অ্যারেটি প্রদর্শন করা হয়। এটি নিচে দেখা যাচ্ছে:

cout << "The shuffled array is: ";
for (int i = 0; i < n; i++)
    cout << arr1[i] << " ";

  1. রিভার্সাল অ্যালগরিদম দিয়ে অ্যারে রোটেশন C++-এ

  2. সি++ প্রোগ্রাম: অপ্টিমাল পেজ রিপ্লেসমেন্ট অ্যালগরিদম

  3. C++ প্রোগ্রাম: অ্যারে উপাদানগুলোর গুণফল বের করা

  4. সোর্টেড অ্যারে বাস্তবায়নের C++ প্রোগ্রাম