একটি পূর্ণসংখ্যার অ্যারে দেওয়া থাকলে, C++ STL-এর sort() ফাংশন বা রিকারসিভ টেকনিক দিয়ে ধনাত্মক ও ঋণাত্মক সংখ্যা রি-অ্যারেঞ্জ করুন।
১. sort() ফাংশন ব্যবহার
sort(arr, arr+size)কল করলে অটোমেটিক সর্ট হয়ে যাবে (ঋণাত্মক আগে, ধনাত্মক পরে)।
২. রিকারসিভ কল ব্যবহার
প্রথমে ঋণাত্মক সংখ্যার কাউন্ট
tempবের করুন।Rearrangement(arr, 0, size-1)রিকারসিভ কল দিন।ফাংশনে
first == lastহলে ফেরত।Rearrangement(arr, first+1, last)কল করুন।যদি
arr[first] >= 0হয়,Rotate(arr, first+1, last)ওRotate(arr, first, last)কল করুন।Rotateফাংশনে টু-পয়েন্টার দিয়ে রিভার্স করুন।শেষে
Rotate(arr, temp, size-1)কল করুন।
উদাহরণ কোড (sort())
#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
sort(arr, arr + size);
}
int main(){
int arr[] = {4, 2, -1, -1, 6, -3, 0};
int size = sizeof(arr)/sizeof(arr[0]);
Rearrangement(arr, size);
cout << "Rearrangement of positive and negative numbers using inbuilt sort function is: ";
for(int i = 0; i < size; i++) cout << arr[i] << " ";
return 0;
}
আউটপুট (sort())
Rearrangement of positive and negative numbers using inbuilt sort function is: -3 -1 -1 0 2 4 6
উদাহরণ কোড (রিকারসিভ)
#include <bits/stdc++.h>
using namespace std;
void Rotate(int arr[], int first, int last){
while(first < last){
int temp = arr[first];
arr[first] = arr[last];
arr[last] = temp;
first++; last--;
}
}
void Rearrangement(int arr[], int first, int last){
if(first == last) return;
Rearrangement(arr, first+1, last);
if(arr[first] >= 0){
Rotate(arr, first+1, last);
Rotate(arr, first, last);
}
}
int main(){
int arr[] = {4, 2, -1, -1, 6, -3, 0};
int size = sizeof(arr)/sizeof(arr[0]);
int temp = 0;
for(int i = 0; i < size; i++) if(arr[i] < 0) temp++;
Rearrangement(arr, 0, size-1);
Rotate(arr, temp, size-1);
cout << "Rearrangement of positive and negative numbers using Recursion is: ";
for(int i = 0; i < size; i++) cout << arr[i] << " ";
return 0;
}
আউটপুট (রিকারসিভ)
Rearrangement of positive and negative numbers using Recursion is: -1 -1 -3 4 2 6 0