ফিশার-ইয়েটস অ্যালগরিদম অ্যারের উপাদানগুলির একটি র্যান্ডম স্থানচ্যুতি তৈরি করে যেমন এটি একটি অ্যারের সমস্ত উপাদানকে এলোমেলোভাবে এলোমেলো করে দেয়৷ ফিশার-ইয়েটস অ্যালগরিদম নিরপেক্ষ হওয়ায় অ্যারের জন্য সমস্ত স্থানান্তর সমানভাবে সম্ভব৷
C++-এ অ্যারে শাফলিং-এর জন্য ফিশার-ইয়েটস অ্যালগরিদম বাস্তবায়নের জন্য একটি প্রোগ্রাম নিম্নরূপ দেওয়া হয়েছে -
উদাহরণ
#include <iostream> #include <t;stdlib.h> 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[] 0 তে আরম্ভ করা হয়। তারপর 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] << " ";