কম্পিউটার

ক্রমানুসারে একটি বিন্যাস পুনর্বিন্যাস করুন - ক্ষুদ্রতম, বৃহত্তম, 2য় ক্ষুদ্রতম, 2য় বৃহত্তম,। C++ ব্যবহার করে


আমরা একটি অ্যারে দেওয়া হয়; আমাদের এই অ্যারেটি এমনভাবে সাজাতে হবে যে প্রথম উপাদানটি সর্বনিম্ন উপাদান হওয়া উচিত, দ্বিতীয় উপাদানটি সর্বাধিক উপাদান হওয়া উচিত, তৃতীয় উপাদানটি 2য় সর্বনিম্ন উপাদান হওয়া উচিত, চতুর্থ উপাদানটি 2য় সর্বোচ্চ উপাদান হওয়া উচিত এবং আরও অনেক কিছুর জন্য উদাহরণ −

Input : arr[ ] = { 13, 34, 30, 56, 78, 3 }
Output : { 3, 78, 13, 56, 34, 30 }
Explanation : array is rearranged in the order { 1st min, 1st max, 2nd min, 2nd max, 3rd min, 3rd max }

Input : arr [ ] = { 2, 4, 6, 8, 11, 13, 15 }
Output : { 2, 15, 4, 13, 6, 11, 8 }

সমাধান খোঁজার পদ্ধতি

এই সমস্যাটি দুটি ভেরিয়েবল ব্যবহার করে সমাধান করা যেতে পারে, 'x 's এবং 'y ' যেখানে তারা সর্বাধিক এবং সর্বনিম্ন উপাদানের দিকে নির্দেশ করবে, তবে সেই অ্যারের জন্য সাজানো উচিত, তাই আমাদের প্রথমে অ্যারে সাজাতে হবে, তারপরে পুনরায় সাজানো অ্যারে সংরক্ষণ করতে একই আকারের একটি নতুন খালি অ্যারে তৈরি করুন। এখন অ্যারের উপর পুনরাবৃত্তি করুন এবং যদি পুনরাবৃত্তিমূলক উপাদানটি জোড় সূচকে থাকে, তাহলে খালি অ্যারেতে arr[x ] উপাদান যোগ করুন এবং x 1 দ্বারা বৃদ্ধি করুন। যদি উপাদানটি একটি বিজোড় সূচকে থাকে, তাহলে arr[y] উপাদান যোগ করুন খালি অ্যারে এবং y 1 দ্বারা হ্রাস করুন। y x থেকে ছোট না হওয়া পর্যন্ত এটি করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 2, 4, 6, 8, 11, 13, 15 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // creating a new array to store the rearranged array.
   int reordered_array[n];

   // sorting the original array
   sort(arr, arr + n);

   // pointing variables to minimum and maximum element index.
   int x = 0, y = n - 1;
   int i = 0;

   // iterating over the array until max is less than or equals to max.
   while (x <= y) {
   // if i is even then store max index element

      if (i % 2 == 0) {
         reordered_array[i] = arr[x];
         x++;
      }
      // store min index element
      else {
         reordered_array[i] = arr[y];
         y--;
      }
      i++;
   }
   // printing the reordered array.
   for (int i = 0; i < n; i++)
      cout << reordered_array[i] << " ";

   // or we can update the original array
   // for (int i = 0; i < n; i++)
   // arr[i] = reordered_array[i];
   return 0;
}

আউটপুট

2 15 4 13 6 11 8

উপরের কোডের ব্যাখ্যা

  • ভেরিয়েবলগুলিকে শুরু করা হয় x=0 এবং y =array_length(n) - 1 .
  • যখন( x<=y) অ্যারেটি অতিক্রম করে যতক্ষণ না x y থেকে বড় হয়।
  • যদি গণনা সমান হয় (x), উপাদানটি চূড়ান্ত অ্যারেতে যোগ করা হয়, এবং পরিবর্তনশীল x 1 দ্বারা বৃদ্ধি পায়।
  • যদি i বিজোড় হয়, তাহলে (y) উপাদানটি চূড়ান্ত অ্যারেতে যোগ করা হয়, এবং ভেরিয়েবল y 1 দ্বারা হ্রাস পায়।
  • অবশেষে, পুনরায় সাজানো অ্যারেটি reordered_array[ ]-এ সংরক্ষিত হয়।

উপসংহার

এই নিবন্ধে, আমরা প্রদত্ত অ্যারেটিকে ক্ষুদ্রতম, বৃহত্তম আকারে পুনর্বিন্যাস করার সমাধান নিয়ে আলোচনা করেছি। আমরা এর জন্য একটি C++ প্রোগ্রামও লিখি। একইভাবে, আমরা এই প্রোগ্রামটি অন্য যেকোনো ভাষায় লিখতে পারি যেমন সি, জাভা, পাইথন, ইত্যাদি। আমরা আশা করি আপনার এই নিবন্ধটি সহায়ক হবে।


  1. C++ এ BST (BST-তে অর্ডার পরিসংখ্যান) k-তম ক্ষুদ্রতম উপাদান খুঁজুন

  2. বাইনারি অনুসন্ধান ব্যবহার করে একটি অ্যারেতে সর্বাধিক উপাদান খুঁজে পেতে C++ প্রোগ্রাম

  3. লিনিয়ার সার্চ ব্যবহার করে একটি অ্যারেতে ন্যূনতম উপাদান খুঁজে পেতে C++ প্রোগ্রাম

  4. একটি অ্যারের সবচেয়ে বড় উপাদান খুঁজে পেতে C++ প্রোগ্রাম