আমাদের একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে যাতে বিষম এবং সম পূর্ণসংখ্যা মান রয়েছে। কাজটি হল অ্যারেটিকে এমনভাবে পুনর্বিন্যাস করা যাতে arr[i] arr[j]-এর চেয়ে বড় বা সমান হবে যদি arr[i]-এ থাকা মান সম হয়, এবং arr[i] arr[j]-এর চেয়ে ছোট বা সমান হবে যদি arr[i]-এ থাকা মান বিষম হয়।
বিভিন্ন ইনপুট-আউটপুট পরিস্থিতি দেখে নিই -
ইনপুট - int arr[] = {5, 9, 10, 12, 32, 35, 67, 89}
আউটপুট - উপাদানগুলো পুনর্বিন্যাস করার পর অ্যারে: 12 32 10 35 9 67 5 89
ব্যাখ্যা - আমাদের একটি অ্যারে দেওয়া আছে বিষম এবং সম পূর্ণসংখ্যার সাথে। এখন আমরা arr[i] পজিশন থেকে arr[j] পজিশন পর্যন্ত ট্র্যাভার্স শুরু করব এবং চেক করব IF arr[i] সম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে বড়, এবং IF arr[i] বিষম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে ছোট বা সমান।
ইনপুট - int arr[] = {4, 5, 1, 2, 9, 10}
আউটপুট - উপাদানগুলো পুনর্বিন্যাস করার পর অ্যারে: 4 5 2 9 1 10
ব্যাখ্যা - আমাদের একটি অ্যারে দেওয়া আছে বিষম এবং সম পূর্ণসংখ্যার সাথে। এখন আমরা arr[i] পজিশন থেকে arr[j] পজিশন পর্যন্ত ট্র্যাভার্স শুরু করব এবং চেক করব IF arr[i] সম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে বড়, এবং IF arr[i] বিষম হয় তবে নিশ্চিত করব যে arr[i] arr[j]-এর চেয়ে ছোট বা সমান।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি
- পূর্ণসংখ্যা টাইপের একটি অ্যারে ঘোষণা করুন। অ্যারের আকার গণনা করুন size = sizeof(arr) / sizeof(arr[0])।
- array_rearrange(arr, size) নামে একটি ফাংশন কল করুন এবং ডেটা প্যারামিটার হিসেবে পাস করুন।
- even নামের একটি ভেরিয়েবল ঘোষণা করুন এবং সেটি even = size / 2 দিয়ে সেট করুন এবং অন্য একটি ভেরিয়েবল odd ঘোষণা করুন এবং সেটি size - even দিয়ে সেট করুন।
- temp নামের একটি ভেরিয়েবল ঘোষণা করুন এবং সেটি odd - 1 দিয়ে সেট করুন। arr_2[] নামে একটি অ্যারে ঘোষণা করুন arr_1[]-এর আকারের।
- i = ০ থেকে size পর্যন্ত একটি FOR লুপ শুরু করুন। লুপের ভিতরে arr_2[i] = arr[i] সেট করুন।
- sort(arr_2, arr_2 + size) ফাংশন কল করুন।
- i = ০ থেকে size পর্যন্ত ২-২ করে (i += 2) একটি FOR লুপ শুরু করুন। লুপের ভিতরে arr[i] = arr_2[temp] সেট করুন এবং temp ভেরিয়েবলটি ১ কমানো।
- temp = odd সেট করুন। i = ১ থেকে size পর্যন্ত ২-২ করে (i += 2) একটি FOR লুপ শুরু করুন। লুপের ভিতরে arr[i] = arr_2[temp] সেট করুন এবং temp কে ১ বাড়ান।
- i = ০ থেকে size পর্যন্ত একটি FOR লুপ শুরু করুন। arr[i] প্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void array_rearrange(int arr[], int size){
int even = size / 2;
int odd = size - even;
int temp = odd - 1;
int arr_2[size];
for(int i = 0; i < size; i++){
arr_2[i] = arr[i];
}
sort(arr_2, arr_2 + size);
for(int i = 0; i < size; i += 2){
arr[i] = arr_2[temp];
temp--;
}
temp = odd;
for(int i = 1; i < size; i += 2){
arr[i] = arr_2[temp];
temp++;
}
cout<<"Array after rearranging elements are: ";
for (int i = 0; i < size; i++){
cout << arr[i] << " ";
}
}
int main(){
int arr[] = {5, 9, 10, 12, 32, 35, 67, 89};
int size = sizeof(arr) / sizeof(arr[0]);
array_rearrange(arr, size);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি জেনারেট হবে
Array after rearranging elements are: 12 32 10 35 9 67 5 89