এই সমস্যায়, আমাদেরকে n আকারের একটি অ্যারে দেওয়া হয়েছে যা n/2 জোড় মান এবং n/2 বিজোড় মান নিয়ে গঠিত। আমাদের কাজ হল জোড় সূচকে জোড় সংখ্যা এবং বিজোড় সূচকে বিজোড় সংখ্যা রাখার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট: arr[] ={5, 1, 6, 4, 3, 8}
আউটপুট: arr[] ={6, 1, 5, 4, 3, 8}
সমাধান পদ্ধতি -
একটি সমাধান অ্যারে অতিক্রম করা হবে এবং তারপর শেষ সংখ্যাটি খুঁজে বের করবে যা জোড় অবস্থানে নেই এবং এটিকে পরবর্তী অফ প্লেস মান দিয়ে প্রতিস্থাপন করা হবে। এটি একটি প্রতিশ্রুতিশীল সমাধান তবে দুটি সূচক একটি জোড়ের জন্য এবং একটি বিজোড়ের জন্য ব্যবহার করে সমাধানটিকে আরও কার্যকর করা যেতে পারে। যদি জোড় সূচকে একটি উপাদান থাকে যা জোড় নয় এবং একটি বিজোড় উপাদান যা বিজোড় সূচকে নয়, আমরা তাদের অদলবদল করব অন্যথায় উভয় সূচককে দুই দ্বারা বৃদ্ধি করব।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include <iostream> using namespace std; void O_EReshuffle(int arr[], int n) { int oIndex = 1; int eIndex = 0; for(int i = 0; i < n; ) { while (eIndex < n && arr[eIndex] % 2 == 0) eIndex += 2; while (oIndex < n && arr[oIndex] % 2 == 1) oIndex += 2; if (eIndex < n && oIndex < n) swap (arr[eIndex], arr[oIndex]); else break; } } int main() { int arr[] = { 5, 1, 6, 4, 3, 8 }; int n = sizeof(arr) / sizeof(arr[0]); cout << "Array before Reshuffling: "; for(int i = 0; i < n ; i++){ cout<<arr[i]<<"\t"; } O_EReshuffle(arr, n); cout<<"\nArray after Reshuffling: "; for(int i = 0; i < n ; i++){ cout<<arr[i]<<"\t"; }; return 0; }
আউটপুট −
Array before Reshuffling: 5 1 6 4 3 8 Array after Reshuffling: 4 1 6 5 8 3