কম্পিউটার

C++ এ ধ্রুবক অতিরিক্ত স্থান সহ ধনাত্মক এবং ঋণাত্মক সংখ্যাগুলি পুনরায় সাজান


আমাদেরকে একটি পূর্ণসংখ্যা টাইপ অ্যারে দেওয়া হয়েছে যাতে ধনাত্মক এবং ঋণাত্মক উভয় সংখ্যা থাকে, ধরা যাক, যে কোনো প্রদত্ত আকারের arr[]। কাজটি হল একটি অ্যারেকে এমনভাবে পুনর্বিন্যাস করা যাতে একটি অ্যারের সমস্ত উপাদান C++ STL-এর অন্তর্নির্মিত সাজানোর ফাংশন ব্যবহার করে পাশাপাশি কোডিং এবং ফলাফল প্রিন্ট করার পুনরাবৃত্তিমূলক প্রযুক্তি ব্যবহার করে সাজানো হয়।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

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

আউটপুট − ধ্রুবক অতিরিক্ত স্থান সহ ধনাত্মক এবং ঋণাত্মক সংখ্যার পুনর্বিন্যাস হল:-3 -1 -1 0 6 2 4৷

ব্যাখ্যা − আমাদের ধনাত্মক এবং নেতিবাচক উভয় উপাদান সমন্বিত আকার 7 এর একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে। এখন, আমরা অ্যারেটিকে এমনভাবে সাজাব যাতে একটি অ্যারের সমস্ত উপাদান ধ্রুবক অতিরিক্ত স্থানের মধ্যে সাজানো হয় এবং চূড়ান্ত ফলাফল হবে -3 -1 -1 0 2 4 6৷

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

আউটপুট − ধ্রুবক অতিরিক্ত স্থান সহ ধনাত্মক এবং ঋণাত্মক সংখ্যার পুনর্বিন্যাস হল:-9 -10 2 3 10 5 8 4

ব্যাখ্যা − আমাদের ধনাত্মক এবং নেতিবাচক উভয় উপাদান সমন্বিত আকার 8 এর একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে। এখন, আমরা অ্যারেটিকে এমনভাবে সাজাব যাতে একটি অ্যারের সমস্ত উপাদান ধ্রুবক অতিরিক্ত স্থানের মধ্যে সাজানো হয় এবং চূড়ান্ত ফলাফল হবে -9 -10 2 3 10 5 8 4৷

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

  • পূর্ণসংখ্যা ধরনের উপাদানগুলির একটি অ্যারে ইনপুট করুন এবং একটি অ্যারের আকার গণনা করুন৷

  • FOR লুপ ব্যবহার করে পুনর্বিন্যাস ক্রিয়া সম্পাদন করার আগে একটি অ্যারে প্রিন্ট করুন৷

  • প্যারামিটার হিসাবে অ্যারের অ্যারে এবং সাইজ পাস করে ফাংশন পুনর্বিন্যাস (আর, আকার) এ কল করুন।

  • ফাংশনের ভিতরে পুনঃবিন্যাস(arr, size)

    • i থেকে 0 এবং j থেকে আকার -1 হিসাবে একটি পূর্ণসংখ্যা টাইপ ভেরিয়েবল ঘোষণা করুন।

    • শুরু করার সময় (সত্য)। কিছুক্ষণের মধ্যে, আরেকটি লুপ শুরু করুন যখন arr[i] 0 এর কম এবং i আকারের থেকে কম তারপর i কে 1 দ্বারা বৃদ্ধি করুন।

    • 0-এর থেকে বড় এবং 0-এর থেকে j-এর বেশি হলে শুরু করুন তারপর j-কে 1 দ্বারা কমিয়ে দিন৷

    • পরীক্ষা করুন যদি i j এর থেকে কম হয় তাহলে temp সেট করুন arr[i], arr[i] এ arr[j] এবং arr[j] এ temp।

    • অন্যথা, বিরতি।

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include<iostream>
using namespace std;
void Rearrangement(int arr[], int size){
   int i = 0;
   int 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]);
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   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) অতিরিক্ত স্থানে সদৃশ খুঁজুন - C++ এ 1 সেট করুন

  2. পাইথনে অ্যারের উপাদানগুলি O(n) সময় এবং O(1) স্থান (ধনাত্মক এবং ঋণাত্মক উভয় সংখ্যাই পরিচালনা করে) পরপর আছে কিনা তা পরীক্ষা করুন

  3. ধনাত্মক এবং ঋণাত্মক সংখ্যা পুনর্বিন্যাস করতে পাইথন প্রোগ্রামে ল্যাম্বডা এক্সপ্রেশন

  4. ধনাত্মক এবং ঋণাত্মক সংখ্যা পুনর্বিন্যাস করতে পাইথনে ল্যাম্বডা এক্সপ্রেশন