একটি ধনাত্মক পূর্ণসংখ্যার অ্যারে দেওয়া থাকলে, সেটিকে রি-অ্যারেঞ্জ করতে হবে যাতে সব আড ইনডেক্সের এলিমেন্ট उससे আগের ইভেন ইনডেক্সের চেয়ে বড় হয়।
উদাহরণ
ইনপুট − arr[] = {2,1,5,4,3,7,8}
আউটপুট − 1 4 2 5 3 8 7
ব্যাখ্যা − স্ব্যাপ সিকোয়েন্স: (0,1), (2,3), (6,5), (2,1) → ফলাফল 1 4 2 5 3 8 7।
ইনপুট − arr[] = {3,2,6,9}
আউটপুট − 2 3 6 9
ব্যাখ্যা − শুধু (0,1) স্ব্যাপ।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
ptr = size-1।for i=0; i: যদি arr[i] > arr[i+1]হয়,swap(arr[i], arr[i+1])।যদি সাইজ বিজোড় হয় (
size & 1),for i=ptr; i>0; i-=2: যদিarr[i] > arr[i-1]হয়,swap(arr[i], arr[i-1])।
উদাহরণ কোড
#include <iostream>
using namespace std;
void Rearrangement(int arr[], int size){
int ptr = size - 1;
for(int i = 0; i < ptr; i = i+2){
if(arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
}
}
if(size & 1){
for(int i = ptr; i > 0; i = i-2){
if(arr[i] > arr[i-1]){
swap(arr[i], arr[i-1]);
}
}
}
}
int main(){
int arr[] = {2, 1, 5, 4, 3, 7, 8};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Array before Arrangement: ";
for (int i = 0; i < size; i++) cout << arr[i] << " ";
Rearrangement(arr, size);
cout << "\nRearrangement of an array such that every odd indexed element is greater than it previous is: ";
for(int i = 0; i < size; i++) cout << arr[i] << " ";
return 0;
}
আউটপুট
উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:
Array before Arrangement: 2 1 5 4 3 7 8 Rearrangement of an array such that every odd indexed element is greater than it previous is: 1 4 2 5 3 8 7