ভেক্টর শাফেল করা ফিশার-ইয়েটস শাফেল অ্যালগরিদম দিয়ে করা যায়।
এই অ্যালগরিদমে, একটি ভেক্টরের লিনিয়ার স্ক্যান করা হয় এবং তারপর প্রতিটি উপাদানকে বাকি সব উপাদানের মধ্যে একটি র্যান্ডম উপাদানের সাথে বদলানো হয়, স্বয়ং উপাদানটিও অন্তর্ভুক্ত।
অ্যালগরিদম
শুরু show() ফাংশন ঘোষণা করুন। show() ফাংশনের প্যারামিটার হিসেবে একটি ভেক্টর কনস্ট্রাক্টর পাস করুন। for (auto const& i: input) i ভেরিয়েবলের মান প্রিন্ট করুন। v ভেক্টর টাইপ ঘোষণা করুন। v ভেক্টরে কিছু মান আরে প্যাটার্নে আরম্ভ করুন। size ইন্টিজার ডেটা টাইপের একটি ভেরিয়েবল ঘোষণা করুন। ভেক্টরের আকার পেতে size() ফাংশন কল করুন। size = v.size() আরম্ভ করুন। for (int i = 0; i < size - 1; i++) j = i + rand() % (size - i)। swap() ফাংশন কল করে v[i] এবং v[j] এর মান বদলান। "শাফেল হওয়ার পর উপাদানগুলো:" প্রিন্ট করুন। v ভেক্টরের শাফেল করা মান দেখাতে show() ফাংশন কল করুন। শেষ।
উদাহরণ কোড
#include <iostream> #include <vector> #include <algorithm> using namespace std; void show(vector<int> const &input) { for (auto const& i: input) { std::cout << i << " "; } } int main() { vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int size = v.size(); for (int i = 0; i < size - 1; i++) { int j = i + rand() % (size - i); swap(v[i], v[j]); } cout << "শাফেল হওয়ার পর উপাদানগুলো" << endl; show(v); return 0; }আউটপুট
শাফেল হওয়ার পর উপাদানগুলো 2 8 5 3 1 9 4 7 6