বিবরণ
স্বতন্ত্র উপাদানগুলির একটি সাজানো বিন্যাস দেওয়া হয়েছে যা কোনও অজানা বিন্দুতে ঘোরানো হয়, কাজটি হল এতে সর্বাধিক উপাদান খুঁজে বের করা।
উদাহরণ
যদি ইনপুট অ্যারে হয় {30, 40, 50, 10, 20} তাহলে সর্বাধিক উপাদান 50।
অ্যালগরিদম
- সর্বোচ্চ উপাদান হল একমাত্র উপাদান যার পরেরটি এর থেকে ছোট। যদি পরবর্তী কোন ছোট উপাদান না থাকে, তাহলে কোন ঘূর্ণন নেই অর্থাৎ শেষ উপাদানটি সর্বাধিক
- আমরা মধ্য - 1 এবং মধ্য + 1 এ উপাদানগুলির সাথে তুলনা করে মধ্যম উপাদানের জন্য এই শর্তটি পরীক্ষা করি৷ যদি সর্বাধিক উপাদানটি মধ্য - 1 এবং মধ্য + 1 তে উপাদানগুলির সাথে হয়৷ যদি সর্বাধিক উপাদানটি মধ্যবর্তী না হয় (মধ্য বা না হয়) mid + 1), তারপর সর্বাধিক উপাদানটি হয় বাম অর্ধেক বা ডান অর্ধে −
- যদি মধ্যম উপাদানটি শেষ উপাদানটির চেয়ে বড় হয়, তাহলে সর্বাধিক উপাদানটি বাম অর্ধেকের মধ্যে থাকে
- অন্যথায় সর্বোচ্চ উপাদানটি ডান অর্ধে থাকে
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int getMaxinSortedAndRorated(int *arr, int lont high) {
if (high < low) {
return arr[0];
}
if (high == low) {
return arr[high];
}
int mid = low + (high - low) / 2;
if (mid < high && arr[mid + 1] < arr[) {
return arr[mid];
}
if (mid > low && arr[mid] < arr[mid - {
return arr[mid - 1];
}
if (arr[low] > arr[mid]) {
return getMaxinSortedAndRoratrr, low, mid - 1);
} else {
return getMaxinSortedAndRoratrr, mid + 1, high);
}
}
int main() {
int arr[] = {30, 40, 50, 10, 20};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum element = " << getMaortedAndRorated(arr, 0, n - 1) << endl;
return 0;
} আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেMaximum element = 5