কম্পিউটার টিউটোরিয়াল

C++-এ কনস্ট্যান্ট এক্সট্রা স্পেস দিয়ে ধনাত্মক ও ঋণাত্মক সংখ্যা রি-অ্যারেঞ্জ করুন


একটি পূর্ণসংখ্যার অ্যারে (ধনাত্মক ও ঋণাত্মক) দেওয়া থাকলে, কনস্ট্যান্ট এক্সট্রা স্পেস ব্যবহার করে সেটিকে সর্ট করতে হবে যাতে সব ঋণাত্মক সংখ্যা আগে, তারপর ধনাত্মক।

উদাহরণ

ইনপুট − arr[] = {4, 2, -1, -1, 6, -3, 0}

আউটপুট − -3 -1 -1 0 6 2 4

ইনপুট − arr[] = {-9, -10, 2, 3, 10, 5, 8, 4}

আউটপুট − -9 -10 2 3 10 5 8 4

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • দুটি পয়েন্টার i=0 (শুরু), j=size-1 (শেষ)।

  • while(true) লুপে: i বাড়াতে থাকুন যতক্ষণ arr[i] < 0। j কমানো থাকুন যতক্ষণ arr[j] > 0।

  • যদি i < j হয়, swap(arr[i], arr[j])।

  • অন্যথায় ব্রেক।

উদাহরণ কোড

#include <iostream>
using namespace std;

void Rearrangement(int arr[], int size){
    int i = 0, j = size - 1;
    while(true){
        while(arr[i] < 0 && i < size) i++;
        while(arr[j] > 0 && j >= 0) j--;
        if (i < j){
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        else break;
    }
}

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 with constant extra space is: ";
    for(int i = 0; i < size; i++) cout << arr[i] << " ";
    return 0;
}

আউটপুট

উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:

Rearrangement of positive and negative numbers with constant extra space is: -3 -1 -1 0 6 2 4
  1. সি++ প্রোগ্রাম: O(n) টাইম ও O(1) এক্সট্রা স্পেসে ডুপ্লিকেট খুঁজে বের করা (Set 1)

  2. পাইথনে অ্যারে কনসিকিউটিভ (Consecutive) কিনা O(n) টাইম ও O(1) স্পেসে (নেগেটিভ সংখ্যাও হ্যান্ডেল)

  3. পাইথনে ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে পজিটিভ এবং নেগেটিভ নম্বর রিঅরেঞ্জ করুন

  4. পাইথনে ল্যাম্বডা এক্সপ্রেশন দিয়ে পজিটিভ এবং নেগেটিভ সংখ্যা পুনর্বিন্যাস