আমাদেরকে একটি পূর্ণসংখ্যার অ্যারে দেওয়া হয়েছে যা সাজানো/বিন্যস্তভাবে সাজানো যেতে পারে। কাজটি হল প্রথমে অ্যারে সাজানো যদি মানগুলি সাজানো না থাকে তবে অ্যারেটিকে এমনভাবে সাজানো যে অ্যারের প্রথম উপাদানটি সর্বাধিক মান হবে, দ্বিতীয়টি সর্বনিম্ন মান হবে, তৃতীয়টি দ্বিতীয় বৃহত্তম মান হবে, চতুর্থটি হবে দ্বিতীয় সর্বনিম্ন মান এবং তাই।
আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -
ইনপুট − int arr[] ={7, 5, 2, 3, 4, 9, 10, 5 }
আউটপুট − বিন্যাসের পূর্বে বিন্যাস:2 3 4 5 5 7 9 10 সর্বাধিক সর্বনিম্ন আকারে একটি বিন্যাসের পুনর্বিন্যাস হল:10 2 9 3 7 4 5 5
ব্যাখ্যা − আমাদেরকে {7, 5, 2, 3, 4, 9, 10, 5 } হিসাবে মান ধারণকারী একটি পূর্ণসংখ্যা টাইপ অ্যারে দেওয়া হয়েছে। প্রথমে আমরা একটি অ্যারে সাজাব এবং সেটি হবে {2 3 4 5 5 7 9 10}। দ্বিতীয়ত, arr[0] এ 10 তারপর ক্ষুদ্রতম এলিমেন্টকে arr[1] এ সাজান অর্থাৎ 2 তারপর arr[2] এ দ্বিতীয় বৃহত্তম উপাদান অর্থাৎ 9 ইত্যাদি। চূড়ান্ত ফলাফলের অ্যারে হবে 10 2 9 3 7 4 5 5
ইনপুট − int arr[] ={2, 4, 1, 6, 7}
আউটপুট − বিন্যাসের আগে বিন্যাস:1, 2, 4, 6, 7 সর্বাধিক সর্বনিম্ন আকারে একটি বিন্যাসের পুনর্বিন্যাস হল:7, 1, 6, 2, 4
ব্যাখ্যা − আমাদেরকে {2, 4, 1, 6, 7} হিসাবে মান ধারণকারী একটি পূর্ণসংখ্যা টাইপ অ্যারে দেওয়া হয়েছে। প্রথমে আমরা একটি অ্যারে সাজাব এবং সেটি হবে {1, 2, 4, 6, 7}। দ্বিতীয়ত, arr[0]-এ সবচেয়ে বড় এলিমেন্ট সাজান অর্থাৎ 7 তারপর arr[1]-এ সবচেয়ে ছোট উপাদান অর্থাৎ 1 তারপর arr[2]-এ দ্বিতীয় বৃহত্তম উপাদান অর্থাৎ 6 এবং আরও অনেক কিছু। চূড়ান্ত ফলাফলের অ্যারে হবে 7, 1, 6, 2, 4
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
পূর্ণসংখ্যা ধরনের উপাদানগুলির একটি অ্যারে ইনপুট করুন এবং একটি অ্যারের আকার গণনা করুন। আর্গুমেন্ট হিসাবে ফাংশনে arr[] এবং একটি অ্যারের আকার পাস করে C++ STL-এর সাজানোর পদ্ধতিকে কল করুন।
-
সাজানোর আগে অ্যারে প্রিন্ট করুন এবং ফাংশনটিকে কল করুন Rearr_Max_Min(arr, size)
-
Rearr_Max_Min(arr, size)
ফাংশনের ভিতরে-
একটি ভেরিয়েবলকে সর্বোচ্চ হিসাবে ঘোষণা করুন এবং এটিকে আকার - 1 এবং অন্য একটি ভেরিয়েবলকে মিন হিসাবে সেট করুন এবং এটিকে 0 দিয়ে সেট করুন। একটি ভেরিয়েবলকে max_val হিসাবে ঘোষণা করুন এবং এটিকে arr[size - 1] + 1 দিয়ে সেট করুন।
-
i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন যতক্ষণ না আমি আকারের চেয়ে কম। লুপের ভিতরে, IF i % 2 =0 চেক করুন তারপর arr[i] সেট করুন arr[i] + (arr[max] % max_val) * max_val এবং সর্বোচ্চ 1 দ্বারা কমিয়ে দিন।
-
অন্যথায়, arr[i] কে arr[i] + (arr[min] % max_val) * max_val সেট করুন এবং মিনিট 1 দ্বারা বৃদ্ধি করুন।
-
i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন যতক্ষণ না আমি আকারের চেয়ে কম। লুপের ভিতরে, arr[i] এ arr[i] / max_val
সেট করুন
-
উদাহরণ
#include <bits/stdc++.h> using namespace std; void Rearr_Max_Min(int arr[], int size){ int max = size - 1; int min = 0; int max_val = arr[size - 1] + 1; for (int i = 0; i < size; i++){ if (i % 2 == 0){ arr[i] += (arr[max] % max_val) * max_val; max--; } else{ arr[i] += (arr[min] % max_val) * max_val; min++; } } for(int i = 0; i < size; i++){ arr[i] = arr[i] / max_val; } } int main(){ //input an array int arr[] = {7, 5, 2, 3, 4, 9, 10, 5 }; int size = sizeof(arr) / sizeof(arr[0]); //sort an array sort(arr, arr + size); //print the original Array after sorting cout<<"Array before Arrangement: "; for (int i = 0; i < size; i++){ cout << arr[i] << " "; } //calling the function to rearrange the array Rearr_Max_Min(arr, size); //print the array after rearranging the values cout<<"\nRearrangement of an array in maximum minimum form is: "; for(int i = 0; i < size; i++){ cout<< arr[i] << " "; } return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
Array before Arrangement: 2 3 4 5 5 7 9 10 Rearrangement of an array in maximum minimum form is: 10 2 9 3 7 4 5 5