কম্পিউটার

বিন্যাস পুনরায় সাজান যাতে arr[i]>=arr[j] যদি i জোড় হয় এবং arr[i]<=arr[j] যদি i বিজোড় হয় এবং j


আমাদেরকে একটি পূর্ণসংখ্যা অ্যারে দেওয়া হয়েছে যাতে বিজোড় এবং জোড় পূর্ণসংখ্যার মান রয়েছে। কাজটি হল একটি বিন্যাসকে এমনভাবে সাজানো যাতে arr[i] arr[j] এর থেকে বড় বা সমান হওয়া উচিত এই শর্তের উপর ভিত্তি করে যে arr[i] সূচকের মান জোড় হওয়া উচিত এবং যদি arr[i] এ মান হওয়া উচিত। বিজোড় তারপর arr[i] arr[j] এর সমান হতে হবে।

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

ইনপুট − int arr[] ={5, 9, 10, 12, 32, 35, 67, 89}

আউটপুট − উপাদান পুনর্বিন্যাস করার পরে অ্যারে হল:12 32 10 35 9 67 5 89

ব্যাখ্যা − আমাদেরকে বিজোড় এবং জোড় পূর্ণসংখ্যা সহ একটি অ্যারে দেওয়া হয়েছে। এখন, আমরা arr[j] অবস্থানের বিপরীতে arr[i] অবস্থান থেকে ট্রাভার্স করা শুরু করব এবং যদি 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[j] অবস্থানের বিপরীতে arr[i] অবস্থান থেকে ট্রাভার্স করা শুরু করব এবং যদি arr[i] হয় তাহলেও নিশ্চিত করুন যে arr[i] arr[j] এবং IF arr[i] থেকে বড় হওয়া উচিত। বিজোড় তারপর নিশ্চিত করুন যে arr[i] যেন arr[j] এর সমান হয়।

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

  • পূর্ণসংখ্যা ধরনের একটি অ্যারে ঘোষণা. আকার =sizeof(arr) / sizeof(arr[0]) হিসাবে একটি অ্যারের আকার গণনা করুন।

  • একটি ফাংশনকে array_rearrange(arr, size) হিসাবে কল করুন এবং প্যারামিটার হিসাবে ডেটা পাস করুন।

    • একটি ভেরিয়েবলকে জোড় হিসাবে ঘোষণা করুন এবং এটিকে ইভেন =সাইজ / 2 এ সেট করুন এবং অন্য একটি ভেরিয়েবলকে বিজোড় হিসাবে ঘোষণা করুন এবং এটিকে আকার - জোড়ে সেট করুন৷

    • একটি ভেরিয়েবলকে টেম্প হিসাবে ঘোষণা করুন এবং এটিকে বিজোড় এ সেট করুন - 1। arr_1[] এর আকার সহ একটি অ্যারে_2[] ঘোষণা করুন।

    • i থেকে 0 এবং i আকারের চেয়ে কম জন্য লুপ শুরু করুন। লুপের ভিতরে, এটিকে সেট করুন arr_2[i] to arr[i]।

    • একটি ফাংশনকে sort(arr_2, arr_2 + size) হিসাবে কল করুন।

    • i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন যতক্ষণ না আমি আকারের চেয়ে কম। লুপের ভিতরে, arr[i] কে arr_2[temp] এ সেট করুন এবং পরিবর্তনশীল টেম্পকে 1 দ্বারা কমিয়ে দিন।

    • বিজোড় তাপমাত্রা সেট করুন. i থেকে 1 পর্যন্ত FOR লুপ শুরু করুন যতক্ষণ না আমি আকারের চেয়ে কম। লুপের ভিতরে, arr[i] কে arr_2[temp] এ সেট করুন এবং তাপমাত্রা 1 দ্বারা বৃদ্ধি করুন।

    • i থেকে 0 পর্যন্ত 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

  1. অ্যারেতে সবচেয়ে বড় ডি খুঁজুন যেমন সি++ এ a + b + c =d

  2. একটি অ্যারেতে a, b, c এবং d চারটি উপাদান খুঁজুন যেমন C++ এ a+b =c+d

  3. C++ এ একটি অ্যারেতে জোড় এবং বিজোড় সূচীকৃত উপাদানের পরম পার্থক্য?

  4. একটি অ্যারে (C++) এ জোড় এবং বিজোড় সূচীকৃত উপাদানের পরম পার্থক্য?